p_table <- function(tab_data, ...) {
tab_data_2 <- deparse(substitute(tab_data))
table_p <- do.call(CreateTableOne,
list(data = as.name(tab_data_2), includeNA = TRUE, ...))
table_p_out <- print(table_p,
showAllLevels = TRUE,
printToggle = FALSE)
kable(table_p_out,
align = "c")
}
uni_var <- function(test_var, data_imp) {
cat("_________________________________________________")
cat("\n")
cat(" \n##", test_var)
cat("\n")
cat("_________________________________________________")
cat("\n")
f <- as.formula(paste("Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 0)",
as.name(test_var),
sep = " ~ " ))
data_imp_2 <- deparse(substitute(data_imp))
km_fit <- do.call("survfit", list(formula = f, data = as.name(data_imp_2)))
print(km_fit)
cat("\n")
print(summary(km_fit, times = c(12, 24, 36, 48, 60, 120)))
cat("\n")
cat("\n")
cat("\n")
cat(" \n## Univariable Cox Proportional Hazard Model for: ", test_var)
cat("\n")
cat("\n")
n_levels <- nlevels(data_imp[[test_var]])
if(n_levels == 1){
print("Only one level, no Cox model performed")
cat("\n")
} else {
cox_fit <- do.call("coxph", list(formula = f, data = as.name(data_imp_2)))
print(summary(cox_fit))
cat("\n")
do.call("ggforest",
list(model = cox_fit, data = as.name(data_imp_2)))
}
cat("\n")
cat("\n")
cat("\n")
cat(" \n## Unadjusted Kaplan Meier Overall Survival Curve for: ", test_var)
p <- do.call("ggsurvplot",
list(fit = km_fit, data = as.name(data_imp_2),
palette = "jco", censor = FALSE, legend = "right",
linetype = "strata", xlab = "Time (Months)"))
print(p)
}
f_plot <- function(test_var, data_imp){
cat("_________________________________________________")
cat("\n")
cat(" \n##", test_var)
cat("\n")
cat("_________________________________________________")
cat("\n")
f <- as.formula(paste(as.name(test_var),
"AGE + SEX + T_SIZE + FACILITY_TYPE_F + FACILITY_LOCATION_F + YEAR_OF_DIAGNOSIS",
sep = " ~ " ))
data_imp_2 <- deparse(substitute(data_imp))
fit_fn <- do.call("glm",
list(formula = f,
data = as.name(data_imp_2),
family = "binomial"))
print(summary(fit_fn))
or <- as.data.frame(exp(coefficients(fit_fn)))
or$Variable <- rownames(or)
rownames(or) <- c()
names(or) <- c('OddsRatio', 'Variable')
ci <- as.data.frame(exp(confint(fit_fn)))
ci$Variable <- rownames(ci)
rownames(ci) <- c()
p_val_list <- tidy(fit_fn) %>%
select(term, p.value) %>%
rename(Variable = term) %>%
mutate(p.value = round(p.value, 4))
p_val_list$p.value <- as.character(p_val_list$p.value)
p_val_list$p.value[p_val_list$p.value == "0"] <- "< 0.0001"
all <- full_join(or, ci, by = 'Variable')
all <- full_join(all, p_val_list, by = "Variable")
names(all) <- c('OddsRatio', 'Variable', 'Lower', 'Upper', "p_value")
all <- na.omit(all)
all <- all %>%
filter(Variable != '(Intercept)')
text <- cbind(c("Variable", as.character(all$Variable)),
c("Odds Ratio", as.character(round(all$OddsRatio, 2))),
c("Lower CI", as.character(round(all$Lower, 2))),
c("Upper CI", as.character(round(all$Upper, 2))),
c("p Value", all$p_value))
forestplot(text,
mean = c(NA, all$OddsRatio),
lower = c(NA, all$Lower),
upper = c(NA, all$Upper),
new_page = TRUE, zero = 1,
clip = c(0.1, 100),
hrzl_lines = list("2" = gpar(col="#444444")),
vertices = TRUE,
graph.pos = 2,
xlab = "Odds Ratio (log)",
align = "c",
txt_gp = fpTxtGp(cex = 0.7),
xticks = getTicks(low = all$Lower,
high = all$Upper,
clip=c(-Inf, Inf),
exp=TRUE),
boxsize = 0.1)
}
col.width <- c(37, 10, 1, 1, 3, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 8, 2, 2, 2, 4, 4, 1, 4, 1, 1,
1, 3, 2, 2, 8, 2, 5, 5, 5, 4, 5, 5, 5,4, 2, 1, 2, 1, 3, 1, 1, 1, 1, 1, 1, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 6, 8,
8, 8, 2, 1, 1, 1, 1, 8, 1, 1, 8, 1, 1, 2, 2, 5, 2, 5, 3, 1, 3, 1, 8, 8, 2, 8,
2, 8, 2, 2, 1, 8, 1, 1, 1, 1, 1, 8, 1, 2, 2, 2, 2, 2, 1, 1, 1, 2, 1, 3, 1, 1,
1, 1, 1, 1, 1, 1, 1)
col.names.abr <- c("PUF_CASE_ID", "PUF_FACILITY_ID", "FACILITY_TYPE_CD", "FACILITY_LOCATION_CD",
"AGE", "SEX", "RACE", "SPANISH_HISPANIC_ORIGIN", "INSURANCE_STATUS",
"MED_INC_QUAR_00", "NO_HSD_QUAR_00", "UR_CD_03", "MED_INC_QUAR_12", "NO_HSD_QUAR_12",
"UR_CD_13", "CROWFLY", "CDCC_TOTAL_BEST", "SEQUENCE_NUMBER", "CLASS_OF_CASE",
"YEAR_OF_DIAGNOSIS", "PRIMARY_SITE", "LATERALITY", "HISTOLOGY", "BEHAVIOR", "GRADE",
"DIAGNOSTIC_CONFIRMATION", "TUMOR_SIZE", "REGIONAL_NODES_POSITIVE",
"REGIONAL_NODES_EXAMINED", "DX_STAGING_PROC_DAYS", "RX_SUMM_DXSTG_PROC", "TNM_CLIN_T",
"TNM_CLIN_N", "TNM_CLIN_M", "TNM_CLIN_STAGE_GROUP", "TNM_PATH_T", "TNM_PATH_N", "TNM_PATH_M",
"TNM_PATH_STAGE_GROUP", "TNM_EDITION_NUMBER", "ANALYTIC_STAGE_GROUP", "CS_METS_AT_DX",
"CS_METS_EVAL", "CS_EXTENSION", "CS_TUMOR_SIZEEXT_EVAL", "CS_METS_DX_BONE", "CS_METS_DX_BRAIN",
"CS_METS_DX_LIVER", "CS_METS_DX_LUNG", "LYMPH_VASCULAR_INVASION", "CS_SITESPECIFIC_FACTOR_1",
"CS_SITESPECIFIC_FACTOR_2", "CS_SITESPECIFIC_FACTOR_3", "CS_SITESPECIFIC_FACTOR_4",
"CS_SITESPECIFIC_FACTOR_5", "CS_SITESPECIFIC_FACTOR_6", "CS_SITESPECIFIC_FACTOR_7",
"CS_SITESPECIFIC_FACTOR_8", "CS_SITESPECIFIC_FACTOR_9", "CS_SITESPECIFIC_FACTOR_10",
"CS_SITESPECIFIC_FACTOR_11", "CS_SITESPECIFIC_FACTOR_12", "CS_SITESPECIFIC_FACTOR_13",
"CS_SITESPECIFIC_FACTOR_14", "CS_SITESPECIFIC_FACTOR_15", "CS_SITESPECIFIC_FACTOR_16",
"CS_SITESPECIFIC_FACTOR_17", "CS_SITESPECIFIC_FACTOR_18", "CS_SITESPECIFIC_FACTOR_19",
"CS_SITESPECIFIC_FACTOR_20", "CS_SITESPECIFIC_FACTOR_21", "CS_SITESPECIFIC_FACTOR_22",
"CS_SITESPECIFIC_FACTOR_23", "CS_SITESPECIFIC_FACTOR_24", "CS_SITESPECIFIC_FACTOR_25",
"CS_VERSION_LATEST", "DX_RX_STARTED_DAYS", "DX_SURG_STARTED_DAYS", "DX_DEFSURG_STARTED_DAYS",
"RX_SUMM_SURG_PRIM_SITE", "RX_HOSP_SURG_APPR_2010", "RX_SUMM_SURGICAL_MARGINS",
"RX_SUMM_SCOPE_REG_LN_SUR", "RX_SUMM_SURG_OTH_REGDIS", "SURG_DISCHARGE_DAYS", "READM_HOSP_30_DAYS",
"REASON_FOR_NO_SURGERY", "DX_RAD_STARTED_DAYS", "RX_SUMM_RADIATION", "RAD_LOCATION_OF_RX",
"RAD_TREAT_VOL", "RAD_REGIONAL_RX_MODALITY", "RAD_REGIONAL_DOSE_CGY", "RAD_BOOST_RX_MODALITY",
"RAD_BOOST_DOSE_CGY", "RAD_NUM_TREAT_VOL", "RX_SUMM_SURGRAD_SEQ", "RAD_ELAPSED_RX_DAYS",
"REASON_FOR_NO_RADIATION", "DX_SYSTEMIC_STARTED_DAYS", "DX_CHEMO_STARTED_DAYS", "RX_SUMM_CHEMO",
"DX_HORMONE_STARTED_DAYS", "RX_SUMM_HORMONE", "DX_IMMUNO_STARTED_DAYS", "RX_SUMM_IMMUNOTHERAPY",
"RX_SUMM_TRNSPLNT_ENDO", "RX_SUMM_SYSTEMIC_SUR_SEQ", "DX_OTHER_STARTED_DAYS", "RX_SUMM_OTHER",
"PALLIATIVE_CARE", "RX_SUMM_TREATMENT_STATUS", "PUF_30_DAY_MORT_CD", "PUF_90_DAY_MORT_CD",
"DX_LASTCONTACT_DEATH_MONTHS", "PUF_VITAL_STATUS", "RX_HOSP_SURG_PRIM_SITE", "RX_HOSP_CHEMO",
"RX_HOSP_IMMUNOTHERAPY", "RX_HOSP_HORMONE", "RX_HOSP_OTHER", "PUF_MULT_SOURCE", "REFERENCE_DATE_FLAG",
"RX_SUMM_SCOPE_REG_LN_2012", "RX_HOSP_DXSTG_PROC", "PALLIATIVE_CARE_HOSP", "TUMOR_SIZE_SUMMARY",
"METS_AT_DX_OTHER", "METS_AT_DX_DISTANT_LN", "METS_AT_DX_BONE", "METS_AT_DX_BRAIN",
"METS_AT_DX_LIVER", "METS_AT_DX_LUNG", "NO_HSD_QUAR_16", "MED_INC_QUAR_16", "MEDICAID_EXPN_CODE")
#Read in data for each subsite
lip <- read_fwf('NCDBPUF_Lip.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
melanoma <- read_fwf('NCDBPUF_Melanoma.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
skin <- read_fwf('NCDBPUF_OtSkin.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
hodgextr <- read_fwf('NCDBPUF_HodgExtr.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
hodgndal <- read_fwf('NCDBPUF_HodgNdal.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
NHLndal <- read_fwf('NCDBPUF_NHLNdal.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
NHLextr <- read_fwf('NCDBPUF_NHLExtr.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
breast <- read_fwf('NCDBPUF_Breast.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
vulva <- read_fwf('NCDBPUF_Vulva.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
vagina <- read_fwf('NCDBPUF_Vagina.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
penis <- read_fwf('NCDBPUF_Penis.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
otleuk <- read_fwf('NCDBPUF_OtLeuk.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
otheracuteleuk <- read_fwf('NCDBPUF_OtAcLeuk.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
ALL <- read_fwf('NCDBPUF_ALymLeuk.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
#Combine data for all subsites
dat <- bind_rows(lip, melanoma, skin, hodgextr, hodgndal, NHLndal, breast,
vulva, vagina, penis, NHLextr, otleuk, otheracuteleuk, ALL)
rm(lip, melanoma, skin, hodgextr, hodgndal, NHLndal, breast, vulva, vagina,
penis, NHLextr, otleuk, otheracuteleuk, ALL)
prim_site_text <- data_frame(PRIMARY_SITE = c(
#NHL sites
"C000",
"C001",
"C002",
"C003",
"C004",
"C005",
"C006",
"C008",
"C009",
"C019",
"C020",
"C021",
"C022",
"C023",
"C024",
"C028",
"C029",
"C030",
"C031",
"C039",
"C040",
"C041",
"C048",
"C049",
"C050",
"C051",
"C052",
"C058",
"C059",
"C060",
"C061",
"C062",
"C068",
"C069",
"C079",
"C098",
"C099",
"C111",
"C142",
"C300",
"C379",
"C420",
"C422",
"C424",
#skin/melanoma
"C440", "C441", "C442", "C443", "C444", "C445",
"C446", "C447", "C448", "C449",
#breast - nipple
"C500",
#vagina/vulva
"C510", "C511", "C512", "C518", "C519", "C529",
#penis
"C600", "C601", "C602", "C608", "C609", "C639",
"C770",
"C771",
"C772",
"C773",
"C774",
"C775",
"C778",
"C779"),
SITE_TEXT = c(
"C00.0 External Lip: Upper NOS",
"C00.1 External Lip: Lower NOS",
"C00.2 External Lip: NOS",
"C00.3 Lip: Upper Mucosa",
"C00.4 Lip: Lower Mucosa",
"C00.5 Lip: Mucosa NOS",
"C00.6 Lip: Commissure",
"C00.8 Lip: Overlapping",
"C00.9 Lip NOS",
"C01.9 Tongue: Base NOS",
"C02.0 Tongue: Dorsal NOS",
"C02.1 Tongue: Border, Tip",
"C02.2 Tongue: Ventral NOS",
"C02.3 Tongue: Anterior NOS",
"C02.4 Lingual Tonsil",
"C02.8 Tongue: Overlapping",
"C02.9 Tongue: NOS",
"C03.0 Gum: Upper",
"C03.1 Gum: Lower",
"C03.9 Gum NOS",
"C04.0 Mouth: Anterior Floor",
"C04.1 Mouth: Lateral Floor",
"C04.8 Mouth: Overlapping Floor",
"C04.9 Floor of Mouth NOS",
"C05.0 Hard Palate",
"C05.1 Soft Palate NOS",
"C05.2 Uvula",
"C05.8 Palate: Overlapping",
"C05.9 Palate NOS",
"C06.0 Cheek Mucosa",
"C06.1 Mouth: Vestibule",
"C06.2 Retromolar Area",
"C06.8 Mouth: Other Overlapping",
"C06.9 Mouth NOS",
"C07.9 Parotid Gland",
"C09.8 Tonsil: Overlapping",
"C09.9 Tonsil NOS",
"C11.1 Nasopharynx: Poster Wall",
"C14.2 Waldeyer Ring",
"C30.0 Nasal Cavity",
"C37.9 Thymus",
"C42.0 Blood",
"C42.2 Spleen",
"C42.4 Hematopoietic NOS",
#skin
"C44.0 Skin of lip, NOS",
"C44.1 Eyelid",
"C44.2 External ear",
"C44.3 Skin of ear and unspecified parts of face",
"C44.4 Skin of scalp and neck",
"C44.5 Skin of trunk",
"C44.6 Skin of upper limb and shoulder",
"C44.7 Skin of lower limb and hip",
"C44.8 Overlapping lesion of skin",
"C44.9 Skin, NOS",
#breast
"C50.0 Nipple",
#vulva/vagina
"C51.0 Labium majus",
"C51.1 Labium minus",
"C51.2 Clitoris",
"C51.8 Overlapping lesion of vulva",
"C51.9 Vulva, NOS",
"C52.9 Vagina, NOS",
#penis
"C60.0 Prepuce",
"C60.1 Glans penis",
"C60.2 Body of penis",
"C60.8 Overlapping lesion of penis",
"C60.9 Penis",
"C63.2 Scrotum, NOS",
"C77.0 Lymph Nodes: HeadFaceNeck",
"C77.1 Intrathoracic Lymph Nodes",
"C77.2 Intra-abdominal LymphNodes",
"C77.3 Lymph Nodes of axilla or arm ",
"C77.4 Lymph Nodes: Leg",
"C77.5 Pelvic Lymph Nodes",
"C77.8 Lymph Nodes: multiple region",
"C77.9 Lymph Node NOS"))
dat <- merge(dat, prim_site_text, by = "PRIMARY_SITE", all.x = TRUE)
rm(prim_site_text)
# convert numeric variables from character class to numeric class
num_vars <- c("AGE", "CROWFLY", "TUMOR_SIZE", "DX_STAGING_PROC_DAYS", "DX_RX_STARTED_DAYS", "DX_SURG_STARTED_DAYS",
"DX_DEFSURG_STARTED_DAYS", "SURG_DISCHARGE_DAYS", "DX_RAD_STARTED_DAYS", "RAD_REGIONAL_DOSE_CGY",
"RAD_BOOST_DOSE_CGY", "RAD_ELAPSED_RX_DAYS", "DX_SYSTEMIC_STARTED_DAYS", "DX_CHEMO_STARTED_DAYS",
"DX_HORMONE_STARTED_DAYS", "DX_OTHER_STARTED_DAYS", "DX_LASTCONTACT_DEATH_MONTHS",
"RAD_NUM_TREAT_VOL")
dat[num_vars] <- lapply(dat[num_vars], as.numeric)
# convert factor variables from character class to factor class
vars <- names(dat)
fact_vars <- vars[!(vars %in% num_vars)] # basically all of the non-numerics
dat[fact_vars] <- lapply(dat[fact_vars], as.character)
dat[fact_vars] <- lapply(dat[fact_vars], as.factor)
dat <- dat %>%
mutate(FACILITY_TYPE_F = fct_recode(FACILITY_TYPE_CD,
"Community Cancer Program" = "1",
"Comprehensive Comm Ca Program" = "2",
"Academic/Research Program" = "3",
"Integrated Network Ca Program" = "4",
"Other" = "9")) %>%
mutate(FACILITY_LOCATION_F = fct_recode(FACILITY_LOCATION_CD,
"New England" = "1",
"Middle Atlantic" = "2",
"South Atlantic" = "3",
"East North Central" = "4",
"East South Central" = "5",
"West North Central" = "6",
"West South Central" = "7",
"Mountain" = "8",
"Pacific" = "9",
"out of US" = "0")) %>%
mutate(FACILITY_GEOGRAPHY = fct_collapse(FACILITY_LOCATION_CD,
"Northeast" = c("1", "2"),
"South" = c("3", "7"),
"Midwest" = c("4", "5", "6"),
"West" = c("8", "9"))) %>%
mutate(AGE_F = cut(AGE, c(0, 54, 64, 74, 100))) %>%
mutate(AGE_40 = cut(AGE, c(0, 40, 100))) %>%
mutate(SEX_F = fct_recode(SEX,
"Male" = "1",
"Female" = "2")) %>%
mutate(RACE_F = fct_collapse(RACE,
"White" = c("01"),
"Black" = c("02"),
"Asian" = c("04", "05", "06", "07", "08", "10", "11", "12", "13", "14", "15",
"16", "17", "20", "21", "22", "25", "26", "27", "28", "30", "31",
"32", "96", "97"),
"Other/Unk" = c("03", "98", "99"))) %>%
mutate(HISPANIC = fct_collapse(SPANISH_HISPANIC_ORIGIN,
"Yes" = c("1", "2", "3", "4", "5", "6", "7", "8"),
"No" = c("0"),
"Unknown" = c("9"))) %>%
mutate(INSURANCE_F = fct_recode(INSURANCE_STATUS,
"None" = "0",
"Private" = "1",
"Medicaid" = "2",
"Medicare" = "3",
"Other Government" = "4",
"Unknown" = "9")) %>%
mutate(INSURANCE_F = fct_relevel(INSURANCE_F,
"Private")) %>%
mutate(INCOME_F = fct_recode(MED_INC_QUAR_12,
"Less than $38,000" = "1",
"$38,000 - $47,999" = "2",
"$48,000 - $62,999" = "3",
"$63,000 +" = "4")) %>%
mutate(EDUCATION_F = fct_recode(NO_HSD_QUAR_12,
"21% or more" = "1",
"13 - 20.9%" = "2",
"7 - 12.9%" = "3",
"Less than 7%" = "4")) %>%
mutate(U_R_F = fct_collapse(UR_CD_13,
"Metro" = c("1", "2", "3"),
"Urban" = c("4", "5", "6", "7"),
"Rural" = c("8", "9"))) %>%
mutate(CLASS_OF_CASE_F = fct_collapse(CLASS_OF_CASE,
All_Part_Prim = c("10", "11", "12", "13",
"14", "20", "21", "22"),
Other_Facility = c("00"))) %>%
mutate(GRADE_F = fct_recode(GRADE,
"Gr I: Well Diff" = "1",
"Gr II: Mod Diff" = "2",
"Gr III: Poor Diff" = "3",
"Gr IV: Undiff/Anaplastic" = "4",
"NA/Unkown" = "9")) %>%
mutate(HISTOLOGY_F = fct_infreq(HISTOLOGY)) %>%
mutate(HISTOLOGY_F = factor(HISTOLOGY_F)) %>%
mutate(HISTOLOGY_F_LIM = fct_lump(HISTOLOGY_F, prop = 0.05)) %>%
mutate(TNM_CLIN_T = fct_recode(TNM_CLIN_T,
"N_A" = "88")) %>%
mutate(TNM_CLIN_T = fct_relevel(TNM_CLIN_T,
"1")) %>%
mutate(TNM_CLIN_N = fct_recode(TNM_CLIN_N,
"N_A" = "88")) %>%
mutate(TNM_CLIN_M = fct_recode(TNM_CLIN_M,
"N_A" = "88")) %>%
mutate(TNM_PATH_T = fct_recode(TNM_PATH_T,
"N_A" = "88")) %>%
mutate(TNM_PATH_T = fct_relevel(TNM_PATH_T,
"1")) %>%
mutate(TNM_PATH_N = fct_recode(TNM_PATH_N,
"N_A" = "88")) %>%
mutate(TNM_PATH_M = fct_recode(TNM_PATH_M,
"N_A" = "88")) %>%
mutate(TNM_CLIN_STAGE_GROUP = fct_recode(TNM_CLIN_STAGE_GROUP,
"N_A" = "88")) %>%
mutate(TNM_PATH_STAGE_GROUP = fct_recode(TNM_PATH_STAGE_GROUP,
"N_A" = "88")) %>%
mutate(MARGINS = fct_recode(RX_SUMM_SURGICAL_MARGINS,
"No Residual" = "0",
"Residual, NOS" = "1",
"Microscopic Resid" = "2",
"Macroscopic Resid" = "3",
"Not evaluable" = "7",
"No surg" = "8",
"Unknown" = "9")) %>%
mutate(MARGINS_YN = fct_collapse(RX_SUMM_SURGICAL_MARGINS,
"Yes" = c("1", "2", "3"),
"No" = c("0"),
"No surg/Unk/NA" = c("7", "8", "9"))) %>%
mutate(READM_HOSP_30_DAYS_F = fct_recode(READM_HOSP_30_DAYS,
"No_Surg_or_No_Readmit" = "0",
"Unplan_Readmit_Same" = "1",
"Plan_Readmit_Same" = "2",
"PlanUnplan_Same" = "3",
"Unknown" = "4")) %>%
mutate(RX_SUMM_RADIATION_F = fct_recode(RX_SUMM_RADIATION,
"None" = "0",
"Beam Radiation" = "1",
"Radioactive Implants" = "2",
"Radioisotopes" = "3",
"Beam + Imp or Isotopes" = "4",
"Radiation, NOS" = "5",
"Unknown" = "9")) %>%
mutate(PUF_30_DAY_MORT_CD_F = fct_recode(PUF_30_DAY_MORT_CD,
"Alive_30" = "0",
"Dead_30" = "1",
"Unknown" = "9")) %>%
mutate(PUF_90_DAY_MORT_CD_F = fct_recode(PUF_90_DAY_MORT_CD,
"Alive_90" = "0",
"Dead_90" = "1",
"Unknown" = "9")) %>%
mutate(LYMPH_VASCULAR_INVASION_F = fct_recode(LYMPH_VASCULAR_INVASION,
"Neg_LymphVasc_Inv" = "0",
"Pos_LumphVasc_Inv" = "1",
"N_A" = "8",
"Unknown" = "9")) %>%
mutate(RX_HOSP_SURG_APPR_2010_F = fct_recode(RX_HOSP_SURG_APPR_2010,
"No_Surg" = "0",
"Robot_Assist" = "1",
"Robot_to_Open" = "2",
"Endo_Lap" = "3",
"Endo_Lap_to_Open" = "4",
"Open_Unknown" = "5",
"Unknown" = "9")) %>%
mutate(All = "All") %>%
mutate(All = factor(All)) %>%
mutate(REASON_FOR_NO_SURGERY_F = fct_recode(REASON_FOR_NO_SURGERY,
"Surg performed" = "0",
"Surg not recommended" = "1",
"No surg due to pt factors" = "2",
"No surg, pt died" = "5",
"Surg rec, not done" = "6",
"Surg rec, pt refused" = "7",
"Surg rec, unk if done" = "8",
"Unknown" = "9")) %>%
mutate(SURGERY_YN = ifelse(REASON_FOR_NO_SURGERY == "0",
"Yes",
ifelse(REASON_FOR_NO_SURGERY == "9",
"Ukn",
"No"))) %>%
mutate(SURG_TF = case_when(SURGERY_YN == "Yes" ~ TRUE,
SURGERY_YN == "No" ~ FALSE,
TRUE ~ NA)) %>%
mutate(REASON_FOR_NO_RADIATION_F = fct_recode(REASON_FOR_NO_RADIATION,
"Rad performed" = "0",
"Rad not recommended" = "1",
"No Rad due to pt factors" = "2",
"No Rad, pt died" = "5",
"Rad rec, not done" = "6",
"Rad rec, pt refused" = "7",
"Rad rec, unk if done" = "8",
"Unknown" = "9")) %>%
mutate(RADIATION_YN = ifelse(REASON_FOR_NO_RADIATION == "0",
"Yes",
ifelse(REASON_FOR_NO_RADIATION == "9",
NA,
"No"))) %>%
mutate(SURGRAD_SEQ_F = fct_recode(RX_SUMM_SURGRAD_SEQ,
"None or Surg or Rad" = "0",
"Rad before Surg" = "2",
"Surg before Rad" = "3",
"Rad before and after Surg" = "4",
"Intraop Rad" = "5",
"Intraop Rad plus other" = "6",
"Unknown" = "9")) %>%
mutate(SURG_RAD_SEQ = ifelse(SURGERY_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0",
"Surg Alone",
ifelse(RADIATION_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0",
"Rad Alone",
ifelse(SURGERY_YN == "No" & RADIATION_YN == "No" & RX_SUMM_SURGRAD_SEQ == "0",
"No Treatment",
ifelse(RX_SUMM_SURGRAD_SEQ == "2",
"Rad then Surg",
ifelse(RX_SUMM_SURGRAD_SEQ == "3",
"Surg then Rad",
ifelse(RX_SUMM_SURGRAD_SEQ == "4",
"Rad before and after Surg",
"Other"))))))) %>%
mutate(SURG_RAD_SEQ = fct_relevel(SURG_RAD_SEQ,
"Surg Alone",
"Surg then Rad",
"Rad Alone")) %>%
mutate(CHEMO_YN = fct_collapse(RX_SUMM_CHEMO,
"No" = c("00", "82", "85", "86", "87"),
"Yes" = c("01", "02", "03"),
"Ukn" = c("88", "99"))) %>%
mutate(IMMUNO_YN = fct_collapse(RX_SUMM_IMMUNOTHERAPY,
"No" = c("00", "82", "85", "86", "87"),
"Yes" = c("01"),
"Ukn" = c("88", "99"))) %>%
mutate(SURG_RAD_SEQ_C = ifelse(SURGERY_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "No",
"Surg, No rad, No Chemo",
ifelse(RADIATION_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "No",
"Rad, No Surg, No Chemo",
ifelse(SURGERY_YN == "No" & RADIATION_YN == "No" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "No",
"No Surg, No Rad, No Chemo",
ifelse(RX_SUMM_SURGRAD_SEQ == "2" & CHEMO_YN == "No",
"Rad then Surg, No Chemo",
ifelse(RX_SUMM_SURGRAD_SEQ == "3" & CHEMO_YN == "No",
"Surg then Rad, No Chemo",
ifelse(RX_SUMM_SURGRAD_SEQ == "4" & CHEMO_YN == "No",
"Rad before and after Surg, No Chemo",
ifelse(SURGERY_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "Yes",
"Surg, No rad, Yes Chemo",
ifelse(RADIATION_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "Yes",
"Rad, No Surg, Yes Chemo",
ifelse(SURGERY_YN == "No" & RADIATION_YN == "No" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "Yes",
"No Surg, No Rad, Yes Chemo",
ifelse(RX_SUMM_SURGRAD_SEQ == "2" & CHEMO_YN == "Yes",
"Rad then Surg, Yes Chemo",
ifelse(RX_SUMM_SURGRAD_SEQ == "3" & CHEMO_YN == "Yes",
"Surg then Rad, Yes Chemo",
ifelse(RX_SUMM_SURGRAD_SEQ == "4" & CHEMO_YN == "Yes",
"Rad before and after Surg, Yes Chemo",
"Other"))))))))))))) %>%
mutate(SURG_RAD_SEQ_C = fct_infreq(SURG_RAD_SEQ_C)) %>%
mutate(T_SIZE = as.numeric(TUMOR_SIZE)) %>%
mutate(T_SIZE = ifelse(T_SIZE == 0,
"No Tumor",
ifelse(T_SIZE > 0 & T_SIZE < 10 | T_SIZE == 991,
"< 1 cm",
ifelse(T_SIZE >= 10 & T_SIZE < 20 | T_SIZE == 992,
"1-2 cm",
ifelse(T_SIZE >= 20 & T_SIZE < 30 | T_SIZE == 993,
"2-3 cm",
ifelse(T_SIZE >= 30 & T_SIZE < 40 | T_SIZE == 994,
"3-4 cm",
ifelse(T_SIZE >= 40 & T_SIZE < 50 | T_SIZE == 995,
"4-5 cm",
ifelse(T_SIZE >= 50 & T_SIZE < 60 | T_SIZE == 996,
"5-6 cm",
ifelse(T_SIZE >= 60 & T_SIZE <= 987 |
T_SIZE == 980 | T_SIZE == 989 |
T_SIZE == 997,
">6 cm",
ifelse(T_SIZE == 988 | T_SIZE == 999,
"NA_unk",
"Microscopic focus")))))))))) %>%
mutate(T_SIZE = factor(T_SIZE)) %>%
mutate(T_SIZE = fct_relevel(T_SIZE,
"No Tumor", "Microscopic focus", "< 1 cm", "1-2 cm", "2-3 cm", "3-4 cm",
"4-5 cm", "5-6 cm", ">6 cm", "NA_unk")) %>%
mutate(mets_at_dx = case_when(CS_METS_DX_LUNG == "1" ~ "Lung",
CS_METS_DX_BONE == "1" ~ "Bone",
CS_METS_DX_BRAIN == "1" ~ "Brain",
CS_METS_DX_LIVER == "1" ~ "Liver",
TRUE ~ "None/Other/Unk/NA")) %>%
mutate(MEDICAID_EXPN_CODE = fct_recode(MEDICAID_EXPN_CODE,
"Non-Expansion State" = "0",
"Jan 2014 Expansion States" = "1",
"Early Expansion States (2010-13)" = "2",
"Late Expansion States (> Jan 2014)" = "3",
"Suppressed for Ages 0 - 39" = "9")) %>%
mutate(EXPN_GROUP = case_when(MEDICAID_EXPN_CODE %in% c("Jan 2014 Expansion States") &
YEAR_OF_DIAGNOSIS %in% c("2014", "2015") ~ "Post-Expansion",
MEDICAID_EXPN_CODE %in% c("Jan 2014 Expansion States") &
YEAR_OF_DIAGNOSIS %in%
c("2004", "2005", "2006", "2007", "2008",
"2009", "2010", "2011", "2012", "2013") ~ "Pre-Expansion",
MEDICAID_EXPN_CODE %in% c("Early Expansion States (2010-13)") &
YEAR_OF_DIAGNOSIS %in% c("2010", "2011", "2012", "2013", "2014", "2015") ~ "Post-Expansion",
MEDICAID_EXPN_CODE %in% c("Early Expansion States (2010-13)") &
YEAR_OF_DIAGNOSIS %in% c("2004", "2005", "2006", "2007", "2008", "2009") ~ "Pre-Expansion",
MEDICAID_EXPN_CODE %in% c("Non-Expansion State") ~ "Pre-Expansion",
MEDICAID_EXPN_CODE %in% c("Late Expansion States (> Jan 2014)") ~ "Pre-Expansion",
MEDICAID_EXPN_CODE %in% c("Late Expansion States (> Jan 2014)") &
YEAR_OF_DIAGNOSIS %in% c("2014", "2015") ~ "Exclude",
MEDICAID_EXPN_CODE == "Suppressed for Ages 0 - 39" ~ "Exclude")) %>%
mutate(pre_2014 = YEAR_OF_DIAGNOSIS %in% c("2004", "2005", "2006", "2007", "2008",
"2009", "2010", "2011", "2012", "2013")) %>%
mutate(mets_at_dx_F = ifelse(mets_at_dx == "None/Other/Unk/NA", FALSE, TRUE)) %>%
mutate(Tx_YN = ifelse(SURG_RAD_SEQ == "No Treatment" & CHEMO_YN == "No" &
IMMUNO_YN == "No", FALSE,
ifelse(CHEMO_YN == "Ukn", NA,
TRUE)))
fact_vars_2 <- c("FACILITY_TYPE_F", "FACILITY_LOCATION_F", "AGE_F", "SEX_F", "RACE_F",
"HISPANIC", "INSURANCE_F", "INCOME_F", "EDUCATION_F", "U_R_F",
"CDCC_TOTAL_BEST", "CLASS_OF_CASE_F", "YEAR_OF_DIAGNOSIS", "PRIMARY_SITE", "HISTOLOGY",
"BEHAVIOR", "GRADE_F", "TNM_CLIN_T", "TNM_CLIN_N", "TNM_CLIN_M",
"TNM_CLIN_STAGE_GROUP", "TNM_PATH_T", "TNM_PATH_N", "TNM_PATH_M", "TNM_PATH_STAGE_GROUP",
"MARGINS", "READM_HOSP_30_DAYS_F", "RX_SUMM_RADIATION_F", "PUF_30_DAY_MORT_CD_F",
"PUF_90_DAY_MORT_CD_F", "LYMPH_VASCULAR_INVASION_F", "RX_HOSP_SURG_APPR_2010_F", "mets_at_dx")
dat <- dat %>%
mutate_at(fact_vars_2, funs(factor(.)))
Kaplan Meier Analysis
All
uni_var(test_var = "All", data_imp = data)
_________________________________________________
## All
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ All, data = data)
n events median 0.95LCL 0.95UCL
1360 329 142 128 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ All, data = data)
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1184 48 0.963 0.00528 0.952 0.973
24 1032 52 0.919 0.00783 0.903 0.934
36 864 40 0.880 0.00957 0.862 0.899
48 724 34 0.843 0.01107 0.822 0.865
60 592 44 0.788 0.01309 0.763 0.815
120 125 95 0.586 0.02187 0.545 0.631
## Univariable Cox Proportional Hazard Model for: All
[1] "Only one level, no Cox model performed"
## Unadjusted Kaplan Meier Overall Survival Curve for: All



Facility Type
uni_var(test_var = "FACILITY_TYPE_F", data_imp = data)
_________________________________________________
## FACILITY_TYPE_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_TYPE_F, data = data)
14 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
FACILITY_TYPE_F=Community Cancer Program 31 8 NA 79.8 NA
FACILITY_TYPE_F=Comprehensive Comm Ca Program 462 126 128 115.9 NA
FACILITY_TYPE_F=Academic/Research Program 654 144 155 126.1 NA
FACILITY_TYPE_F=Integrated Network Ca Program 199 51 131 113.8 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_TYPE_F, data = data)
14 observations deleted due to missingness
FACILITY_TYPE_F=Community Cancer Program
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 26 1 0.963 0.0363 0.894 1.000
24 23 1 0.926 0.0504 0.832 1.000
36 19 1 0.882 0.0645 0.764 1.000
48 15 0 0.882 0.0645 0.764 1.000
60 14 1 0.823 0.0827 0.676 1.000
120 5 4 0.525 0.1366 0.316 0.875
FACILITY_TYPE_F=Comprehensive Comm Ca Program
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 393 24 0.946 0.0108 0.925 0.967
24 345 18 0.901 0.0145 0.873 0.930
36 294 14 0.862 0.0172 0.829 0.897
48 250 17 0.811 0.0203 0.772 0.851
60 197 16 0.753 0.0234 0.708 0.800
120 34 31 0.555 0.0384 0.484 0.635
FACILITY_TYPE_F=Academic/Research Program
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 581 15 0.976 0.00624 0.963 0.988
24 505 24 0.933 0.01037 0.913 0.954
36 417 20 0.893 0.01323 0.868 0.919
48 352 10 0.870 0.01476 0.842 0.900
60 294 20 0.818 0.01792 0.784 0.854
120 64 48 0.597 0.03241 0.537 0.664
FACILITY_TYPE_F=Integrated Network Ca Program
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 173 8 0.957 0.0147 0.929 0.987
24 148 9 0.904 0.0221 0.862 0.949
36 126 5 0.871 0.0258 0.822 0.923
48 100 7 0.818 0.0311 0.760 0.882
60 80 7 0.758 0.0362 0.691 0.833
120 19 12 0.596 0.0533 0.500 0.710
## Univariable Cox Proportional Hazard Model for: FACILITY_TYPE_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_TYPE_F, data = data)
n= 1346, number of events= 329
(14 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
FACILITY_TYPE_FComprehensive Comm Ca Program 0.09863 1.10366 0.36480 0.270 0.787
FACILITY_TYPE_FAcademic/Research Program -0.16094 0.85135 0.36339 -0.443 0.658
FACILITY_TYPE_FIntegrated Network Ca Program 0.03928 1.04006 0.38045 0.103 0.918
exp(coef) exp(-coef) lower .95 upper .95
FACILITY_TYPE_FComprehensive Comm Ca Program 1.1037 0.9061 0.5399 2.256
FACILITY_TYPE_FAcademic/Research Program 0.8513 1.1746 0.4176 1.735
FACILITY_TYPE_FIntegrated Network Ca Program 1.0401 0.9615 0.4934 2.192
Concordance= 0.543 (se = 0.016 )
Rsquare= 0.004 (max possible= 0.957 )
Likelihood ratio test= 4.81 on 3 df, p=0.1859
Wald test = 4.8 on 3 df, p=0.1873
Score (logrank) test = 4.82 on 3 df, p=0.1854
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: FACILITY_TYPE_F



Facility Location
uni_var(test_var = "FACILITY_LOCATION_F", data_imp = data)
_________________________________________________
## FACILITY_LOCATION_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_LOCATION_F, data = data)
14 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
FACILITY_LOCATION_F=New England 59 18 111 70.2 NA
FACILITY_LOCATION_F=Middle Atlantic 231 52 NA 115.0 NA
FACILITY_LOCATION_F=South Atlantic 255 51 NA 126.1 NA
FACILITY_LOCATION_F=East North Central 222 60 133 105.8 NA
FACILITY_LOCATION_F=East South Central 89 20 133 110.7 NA
FACILITY_LOCATION_F=West North Central 141 38 125 84.9 NA
FACILITY_LOCATION_F=West South Central 99 26 NA 125.6 NA
FACILITY_LOCATION_F=Mountain 79 25 128 106.7 NA
FACILITY_LOCATION_F=Pacific 171 39 150 149.6 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_LOCATION_F, data = data)
14 observations deleted due to missingness
FACILITY_LOCATION_F=New England
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 52 2 0.964 0.0253 0.915 1.000
24 43 3 0.905 0.0404 0.829 0.988
36 37 0 0.905 0.0404 0.829 0.988
48 30 3 0.823 0.0583 0.716 0.946
60 21 4 0.700 0.0756 0.567 0.865
120 4 5 0.429 0.1213 0.247 0.747
FACILITY_LOCATION_F=Middle Atlantic
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 213 4 0.982 0.00896 0.965 1.000
24 180 12 0.923 0.01846 0.888 0.960
36 146 6 0.890 0.02227 0.847 0.935
48 118 8 0.837 0.02768 0.785 0.893
60 98 6 0.793 0.03150 0.734 0.858
120 19 16 0.577 0.05660 0.476 0.700
FACILITY_LOCATION_F=South Atlantic
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 224 7 0.971 0.0108 0.950 0.992
24 207 3 0.957 0.0132 0.932 0.984
36 178 8 0.918 0.0186 0.883 0.955
48 152 6 0.886 0.0221 0.843 0.930
60 128 8 0.836 0.0271 0.784 0.890
120 28 16 0.651 0.0493 0.561 0.755
FACILITY_LOCATION_F=East North Central
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 198 10 0.954 0.0143 0.926 0.982
24 178 6 0.924 0.0183 0.889 0.960
36 151 7 0.884 0.0229 0.840 0.930
48 125 5 0.852 0.0261 0.803 0.905
60 105 8 0.795 0.0313 0.736 0.859
120 18 22 0.537 0.0545 0.440 0.655
FACILITY_LOCATION_F=East South Central
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 74 2 0.976 0.0165 0.945 1.000
24 67 3 0.935 0.0283 0.881 0.992
36 54 4 0.872 0.0401 0.797 0.955
48 48 1 0.856 0.0427 0.776 0.944
60 36 3 0.795 0.0521 0.700 0.904
120 7 6 0.604 0.0826 0.461 0.789
FACILITY_LOCATION_F=West North Central
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 119 4 0.970 0.0150 0.941 0.999
24 98 9 0.892 0.0284 0.838 0.949
36 80 3 0.861 0.0325 0.800 0.927
48 59 7 0.781 0.0413 0.704 0.867
60 47 2 0.753 0.0444 0.671 0.845
120 11 9 0.536 0.0719 0.412 0.697
FACILITY_LOCATION_F=West South Central
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 81 5 0.945 0.0241 0.899 0.993
24 73 4 0.897 0.0327 0.835 0.963
36 66 3 0.860 0.0377 0.789 0.937
48 59 2 0.833 0.0411 0.756 0.917
60 46 5 0.757 0.0494 0.666 0.860
120 8 6 0.622 0.0662 0.505 0.767
FACILITY_LOCATION_F=Mountain
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 70 4 0.946 0.0261 0.896 0.999
24 60 3 0.904 0.0346 0.839 0.974
36 51 3 0.856 0.0425 0.776 0.943
48 44 2 0.820 0.0476 0.732 0.919
60 38 3 0.761 0.0550 0.661 0.877
120 12 8 0.533 0.0805 0.397 0.717
FACILITY_LOCATION_F=Pacific
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 142 10 0.939 0.0188 0.903 0.976
24 115 9 0.876 0.0267 0.825 0.930
36 93 6 0.828 0.0318 0.768 0.892
48 82 0 0.828 0.0318 0.768 0.892
60 66 5 0.772 0.0382 0.700 0.850
120 15 7 0.640 0.0577 0.536 0.763
## Univariable Cox Proportional Hazard Model for: FACILITY_LOCATION_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_LOCATION_F, data = data)
n= 1346, number of events= 329
(14 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
FACILITY_LOCATION_FMiddle Atlantic -0.4202 0.6569 0.2737 -1.536 0.1247
FACILITY_LOCATION_FSouth Atlantic -0.6586 0.5176 0.2745 -2.400 0.0164 *
FACILITY_LOCATION_FEast North Central -0.3203 0.7259 0.2690 -1.191 0.2337
FACILITY_LOCATION_FEast South Central -0.4575 0.6329 0.3252 -1.407 0.1594
FACILITY_LOCATION_FWest North Central -0.0866 0.9170 0.2862 -0.303 0.7622
FACILITY_LOCATION_FWest South Central -0.3416 0.7106 0.3069 -1.113 0.2657
FACILITY_LOCATION_FMountain -0.2283 0.7959 0.3097 -0.737 0.4610
FACILITY_LOCATION_FPacific -0.3479 0.7062 0.2852 -1.220 0.2226
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
FACILITY_LOCATION_FMiddle Atlantic 0.6569 1.522 0.3842 1.1232
FACILITY_LOCATION_FSouth Atlantic 0.5176 1.932 0.3023 0.8863
FACILITY_LOCATION_FEast North Central 0.7259 1.378 0.4285 1.2298
FACILITY_LOCATION_FEast South Central 0.6329 1.580 0.3346 1.1970
FACILITY_LOCATION_FWest North Central 0.9170 1.090 0.5233 1.6069
FACILITY_LOCATION_FWest South Central 0.7106 1.407 0.3894 1.2969
FACILITY_LOCATION_FMountain 0.7959 1.256 0.4338 1.4603
FACILITY_LOCATION_FPacific 0.7062 1.416 0.4038 1.2351
Concordance= 0.547 (se = 0.018 )
Rsquare= 0.008 (max possible= 0.957 )
Likelihood ratio test= 10.59 on 8 df, p=0.2262
Wald test = 10.59 on 8 df, p=0.2263
Score (logrank) test = 10.75 on 8 df, p=0.2164
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: FACILITY_LOCATION_F



Facility Geography
uni_var(test_var = "FACILITY_GEOGRAPHY", data_imp = data)
_________________________________________________
## FACILITY_GEOGRAPHY
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_GEOGRAPHY, data = data)
14 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
FACILITY_GEOGRAPHY=Northeast 290 70 NA 111 NA
FACILITY_GEOGRAPHY=South 354 77 NA 126 NA
FACILITY_GEOGRAPHY=Midwest 452 118 126 111 NA
FACILITY_GEOGRAPHY=West 250 64 150 128 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_GEOGRAPHY, data = data)
14 observations deleted due to missingness
FACILITY_GEOGRAPHY=Northeast
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 265 6 0.978 0.00875 0.961 0.996
24 223 15 0.920 0.01682 0.887 0.953
36 183 6 0.893 0.01957 0.856 0.932
48 148 11 0.835 0.02496 0.787 0.885
60 119 10 0.776 0.02940 0.720 0.836
120 23 21 0.549 0.05180 0.456 0.660
FACILITY_GEOGRAPHY=South
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 305 12 0.964 0.0103 0.944 0.984
24 280 7 0.941 0.0132 0.915 0.967
36 244 11 0.902 0.0170 0.869 0.936
48 211 8 0.871 0.0197 0.834 0.911
60 174 13 0.813 0.0240 0.768 0.862
120 36 22 0.640 0.0407 0.565 0.725
FACILITY_GEOGRAPHY=Midwest
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 391 16 0.963 0.0091 0.945 0.981
24 343 18 0.917 0.0137 0.890 0.944
36 285 14 0.875 0.0170 0.843 0.909
48 232 13 0.833 0.0198 0.795 0.873
60 188 13 0.783 0.0230 0.739 0.829
120 36 37 0.549 0.0387 0.478 0.630
FACILITY_GEOGRAPHY=West
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 212 14 0.941 0.0153 0.912 0.972
24 175 12 0.885 0.0212 0.845 0.928
36 144 9 0.837 0.0255 0.788 0.888
48 126 2 0.824 0.0267 0.773 0.878
60 104 8 0.767 0.0315 0.708 0.832
120 27 15 0.591 0.0493 0.502 0.696
## Univariable Cox Proportional Hazard Model for: FACILITY_GEOGRAPHY
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_GEOGRAPHY, data = data)
n= 1346, number of events= 329
(14 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
FACILITY_GEOGRAPHYSouth -0.23411 0.79128 0.16534 -1.416 0.157
FACILITY_GEOGRAPHYMidwest 0.05075 1.05206 0.15096 0.336 0.737
FACILITY_GEOGRAPHYWest 0.02548 1.02581 0.17315 0.147 0.883
exp(coef) exp(-coef) lower .95 upper .95
FACILITY_GEOGRAPHYSouth 0.7913 1.2638 0.5723 1.094
FACILITY_GEOGRAPHYMidwest 1.0521 0.9505 0.7826 1.414
FACILITY_GEOGRAPHYWest 1.0258 0.9748 0.7306 1.440
Concordance= 0.526 (se = 0.017 )
Rsquare= 0.003 (max possible= 0.957 )
Likelihood ratio test= 4.41 on 3 df, p=0.2201
Wald test = 4.23 on 3 df, p=0.2375
Score (logrank) test = 4.26 on 3 df, p=0.2351
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: FACILITY_GEOGRAPHY



Age Group
uni_var(test_var = "AGE_F", data_imp = data)
_________________________________________________
## AGE_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ AGE_F, data = data)
n events median 0.95LCL 0.95UCL
AGE_F=(0,54] 144 10 NA NA NA
AGE_F=(54,64] 254 25 NA 155 NA
AGE_F=(64,74] 421 68 149.6 132 NA
AGE_F=(74,100] 541 226 81.8 73 95.5
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ AGE_F, data = data)
AGE_F=(0,54]
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 127 1 0.993 0.00697 0.979 1.000
24 119 1 0.985 0.01060 0.964 1.000
36 106 1 0.976 0.01358 0.950 1.000
48 93 0 0.976 0.01358 0.950 1.000
60 76 4 0.930 0.02586 0.881 0.983
120 24 2 0.897 0.03449 0.832 0.967
AGE_F=(54,64]
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 227 3 0.988 0.00695 0.974 1.000
24 209 6 0.961 0.01288 0.936 0.986
36 176 2 0.950 0.01475 0.922 0.979
48 151 3 0.933 0.01755 0.899 0.968
60 126 2 0.920 0.01961 0.882 0.959
120 37 6 0.863 0.02906 0.808 0.922
AGE_F=(64,74]
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 370 7 0.983 0.00653 0.970 0.995
24 319 11 0.952 0.01111 0.930 0.974
36 265 13 0.911 0.01531 0.882 0.942
48 228 2 0.904 0.01601 0.873 0.936
60 190 8 0.871 0.01924 0.834 0.910
120 37 22 0.684 0.04208 0.606 0.772
AGE_F=(74,100]
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 460 37 0.928 0.0115 0.905 0.950
24 385 34 0.856 0.0159 0.825 0.888
36 317 24 0.798 0.0187 0.762 0.835
48 252 29 0.720 0.0218 0.679 0.764
60 200 30 0.630 0.0245 0.584 0.680
120 27 65 0.306 0.0347 0.245 0.382
## Univariable Cox Proportional Hazard Model for: AGE_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ AGE_F, data = data)
n= 1360, number of events= 329
coef exp(coef) se(coef) z Pr(>|z|)
AGE_F(54,64] 0.4320 1.5404 0.3743 1.154 0.24839
AGE_F(64,74] 1.0943 2.9870 0.3392 3.226 0.00126 **
AGE_F(74,100] 2.2006 9.0307 0.3242 6.787 1.14e-11 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
AGE_F(54,64] 1.540 0.6492 0.7397 3.208
AGE_F(64,74] 2.987 0.3348 1.5363 5.808
AGE_F(74,100] 9.031 0.1107 4.7833 17.050
Concordance= 0.685 (se = 0.017 )
Rsquare= 0.124 (max possible= 0.956 )
Likelihood ratio test= 180.1 on 3 df, p=0
Wald test = 147 on 3 df, p=0
Score (logrank) test = 182.2 on 3 df, p=0
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: AGE_F



Age Group
uni_var(test_var = "AGE_40", data_imp = data)
_________________________________________________
## AGE_40
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ AGE_40, data = data)
n events median 0.95LCL 0.95UCL
AGE_40=(0,40] 18 1 NA NA NA
AGE_40=(40,100] 1342 328 142 126 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ AGE_40, data = data)
AGE_40=(0,40]
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 14 0 1.000 0.0000 1.000 1
24 13 1 0.929 0.0688 0.803 1
36 10 0 0.929 0.0688 0.803 1
48 9 0 0.929 0.0688 0.803 1
60 9 0 0.929 0.0688 0.803 1
120 3 0 0.929 0.0688 0.803 1
AGE_40=(40,100]
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1170 48 0.962 0.00534 0.952 0.973
24 1019 51 0.918 0.00788 0.903 0.934
36 854 40 0.880 0.00965 0.861 0.899
48 715 34 0.842 0.01116 0.821 0.864
60 583 44 0.787 0.01321 0.761 0.813
120 122 95 0.581 0.02214 0.540 0.626
## Univariable Cox Proportional Hazard Model for: AGE_40
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ AGE_40, data = data)
n= 1360, number of events= 329
coef exp(coef) se(coef) z Pr(>|z|)
AGE_40(40,100] 1.637 5.138 1.002 1.634 0.102
exp(coef) exp(-coef) lower .95 upper .95
AGE_40(40,100] 5.138 0.1946 0.7212 36.61
Concordance= 0.504 (se = 0.003 )
Rsquare= 0.004 (max possible= 0.956 )
Likelihood ratio test= 4.94 on 1 df, p=0.02622
Wald test = 2.67 on 1 df, p=0.1023
Score (logrank) test = 3.32 on 1 df, p=0.06842
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: AGE_40



Gender
uni_var(test_var = "SEX_F", data_imp = data)
_________________________________________________
## SEX_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SEX_F, data = data)
n events median 0.95LCL 0.95UCL
SEX_F=Male 261 86 82.8 73.6 NA
SEX_F=Female 1099 243 155.4 130.5 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SEX_F, data = data)
SEX_F=Male
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 223 11 0.956 0.0131 0.930 0.982
24 185 16 0.883 0.0213 0.842 0.925
36 144 13 0.816 0.0266 0.766 0.870
48 115 12 0.744 0.0314 0.684 0.808
60 89 12 0.662 0.0357 0.596 0.736
120 17 20 0.435 0.0494 0.348 0.544
SEX_F=Female
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 961 37 0.964 0.00574 0.953 0.976
24 847 36 0.927 0.00826 0.911 0.943
36 720 27 0.895 0.01000 0.876 0.915
48 609 22 0.866 0.01144 0.844 0.889
60 503 32 0.817 0.01370 0.790 0.844
120 108 75 0.619 0.02419 0.573 0.668
## Univariable Cox Proportional Hazard Model for: SEX_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SEX_F, data = data)
n= 1360, number of events= 329
coef exp(coef) se(coef) z Pr(>|z|)
SEX_FFemale -0.6336 0.5307 0.1260 -5.029 4.93e-07 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
SEX_FFemale 0.5307 1.884 0.4146 0.6793
Concordance= 0.555 (se = 0.012 )
Rsquare= 0.017 (max possible= 0.956 )
Likelihood ratio test= 22.71 on 1 df, p=1.882e-06
Wald test = 25.29 on 1 df, p=4.927e-07
Score (logrank) test = 26.14 on 1 df, p=3.175e-07
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: SEX_F



RACE_F
uni_var(test_var = "RACE_F", data_imp = data)
_________________________________________________
## RACE_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RACE_F, data = data)
n events median 0.95LCL 0.95UCL
RACE_F=White 1229 301 142 128.2 NA
RACE_F=Black 25 7 NA 71.5 NA
RACE_F=Other/Unk 35 11 111 97.2 NA
RACE_F=Asian 71 10 NA 108.1 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RACE_F, data = data)
RACE_F=White
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1075 41 0.965 0.00540 0.954 0.975
24 938 50 0.918 0.00826 0.902 0.934
36 787 36 0.880 0.01005 0.861 0.900
48 653 32 0.842 0.01167 0.819 0.865
60 533 41 0.785 0.01384 0.759 0.813
120 115 85 0.591 0.02241 0.549 0.637
RACE_F=Black
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 21 2 0.918 0.0554 0.816 1.000
24 17 1 0.870 0.0705 0.742 1.000
36 15 0 0.870 0.0705 0.742 1.000
48 13 2 0.754 0.0978 0.585 0.972
60 11 1 0.691 0.1080 0.509 0.939
RACE_F=Other/Unk
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 30 2 0.938 0.0422 0.859 1.000
24 26 1 0.905 0.0523 0.808 1.000
36 20 2 0.824 0.0723 0.694 0.979
48 18 0 0.824 0.0723 0.694 0.979
60 16 1 0.779 0.0815 0.634 0.956
120 3 5 0.363 0.1446 0.166 0.792
RACE_F=Asian
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 58 3 0.953 0.0265 0.903 1.000
24 51 0 0.953 0.0265 0.903 1.000
36 42 2 0.912 0.0380 0.841 0.990
48 40 0 0.912 0.0380 0.841 0.990
60 32 1 0.887 0.0446 0.804 0.979
120 7 4 0.663 0.1136 0.474 0.927
## Univariable Cox Proportional Hazard Model for: RACE_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RACE_F, data = data)
n= 1360, number of events= 329
coef exp(coef) se(coef) z Pr(>|z|)
RACE_FBlack 0.3512 1.4208 0.3828 0.917 0.359
RACE_FOther/Unk 0.1943 1.2145 0.3072 0.633 0.527
RACE_FAsian -0.5282 0.5897 0.3215 -1.643 0.100
exp(coef) exp(-coef) lower .95 upper .95
RACE_FBlack 1.4208 0.7038 0.6709 3.009
RACE_FOther/Unk 1.2145 0.8234 0.6652 2.218
RACE_FAsian 0.5897 1.6959 0.3140 1.107
Concordance= 0.516 (se = 0.009 )
Rsquare= 0.003 (max possible= 0.956 )
Likelihood ratio test= 4.48 on 3 df, p=0.2138
Wald test = 4.06 on 3 df, p=0.2547
Score (logrank) test = 4.15 on 3 df, p=0.2456
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: RACE_F



Hispanic
uni_var(test_var = "HISPANIC", data_imp = data)
_________________________________________________
## HISPANIC
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ HISPANIC, data = data)
n events median 0.95LCL 0.95UCL
HISPANIC=No 1234 294 142 128.2 NA
HISPANIC=Yes 52 9 NA 125.6 NA
HISPANIC=Unknown 74 26 NA 97.2 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ HISPANIC, data = data)
HISPANIC=No
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1069 44 0.962 0.00559 0.951 0.973
24 929 44 0.921 0.00814 0.905 0.937
36 773 36 0.882 0.01002 0.863 0.902
48 645 29 0.847 0.01160 0.824 0.870
60 525 40 0.790 0.01385 0.763 0.818
120 106 88 0.575 0.02383 0.530 0.624
HISPANIC=Yes
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 47 0 1.000 0.0000 1.000 1.000
24 41 4 0.913 0.0416 0.835 0.998
36 36 1 0.890 0.0467 0.803 0.986
48 28 1 0.864 0.0518 0.768 0.972
60 23 1 0.831 0.0595 0.722 0.956
120 9 0 0.831 0.0595 0.722 0.956
HISPANIC=Unknown
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 68 4 0.945 0.0268 0.894 0.999
24 62 4 0.888 0.0372 0.818 0.964
36 55 3 0.843 0.0435 0.762 0.933
48 51 4 0.782 0.0500 0.690 0.886
60 44 3 0.736 0.0537 0.637 0.849
120 10 7 0.571 0.0706 0.448 0.728
## Univariable Cox Proportional Hazard Model for: HISPANIC
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ HISPANIC, data = data)
n= 1360, number of events= 329
coef exp(coef) se(coef) z Pr(>|z|)
HISPANICYes -0.4176 0.6586 0.3385 -1.234 0.217
HISPANICUnknown 0.1136 1.1203 0.2050 0.554 0.580
exp(coef) exp(-coef) lower .95 upper .95
HISPANICYes 0.6586 1.5184 0.3392 1.279
HISPANICUnknown 1.1203 0.8927 0.7496 1.674
Concordance= 0.514 (se = 0.009 )
Rsquare= 0.002 (max possible= 0.956 )
Likelihood ratio test= 2.12 on 2 df, p=0.3459
Wald test = 1.9 on 2 df, p=0.3865
Score (logrank) test = 1.93 on 2 df, p=0.3816
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: HISPANIC



Insurance Status
#uni_var(test_var = "HISTOLOGY_F_LIM", data_imp = data)
Overall Survival pre/post-ACA expansion
uni_var(test_var = "EXPN_GROUP", data_imp = no_Excludes)
_________________________________________________
## EXPN_GROUP
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ EXPN_GROUP, data = no_Excludes)
n events median 0.95LCL 0.95UCL
EXPN_GROUP=Post-Expansion 248 36 NA 82.8 NA
EXPN_GROUP=Pre-Expansion 1137 303 142 128.2 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ EXPN_GROUP, data = no_Excludes)
EXPN_GROUP=Post-Expansion
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 206 8 0.965 0.0121 0.942 0.989
24 144 16 0.882 0.0229 0.838 0.928
36 79 6 0.838 0.0280 0.785 0.894
48 52 3 0.797 0.0351 0.731 0.869
60 33 1 0.780 0.0384 0.708 0.859
EXPN_GROUP=Pre-Expansion
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1000 41 0.962 0.00580 0.951 0.974
24 900 41 0.921 0.00835 0.905 0.938
36 799 34 0.885 0.01009 0.865 0.905
48 683 33 0.846 0.01167 0.824 0.870
60 568 44 0.789 0.01376 0.762 0.816
120 125 94 0.586 0.02213 0.545 0.631
## Univariable Cox Proportional Hazard Model for: EXPN_GROUP
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ EXPN_GROUP, data = no_Excludes)
n= 1385, number of events= 339
coef exp(coef) se(coef) z Pr(>|z|)
EXPN_GROUPPre-Expansion -0.2137 0.8076 0.1815 -1.178 0.239
exp(coef) exp(-coef) lower .95 upper .95
EXPN_GROUPPre-Expansion 0.8076 1.238 0.5659 1.153
Concordance= 0.514 (se = 0.01 )
Rsquare= 0.001 (max possible= 0.958 )
Likelihood ratio test= 1.32 on 1 df, p=0.2507
Wald test = 1.39 on 1 df, p=0.239
Score (logrank) test = 1.39 on 1 df, p=0.2381
## Unadjusted Kaplan Meier Overall Survival Curve for: EXPN_GROUP



Education
uni_var(test_var = "EDUCATION_F", data_imp = data)
_________________________________________________
## EDUCATION_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ EDUCATION_F, data = data)
5 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
EDUCATION_F=21% or more 167 43 NA 114 NA
EDUCATION_F=13 - 20.9% 320 72 NA 116 NA
EDUCATION_F=7 - 12.9% 465 132 132 108 NA
EDUCATION_F=Less than 7% 403 81 155 133 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ EDUCATION_F, data = data)
5 observations deleted due to missingness
EDUCATION_F=21% or more
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 145 8 0.949 0.0175 0.916 0.984
24 121 10 0.879 0.0268 0.828 0.933
36 105 4 0.848 0.0301 0.791 0.909
48 90 3 0.823 0.0325 0.762 0.889
60 75 4 0.784 0.0362 0.716 0.859
120 18 12 0.597 0.0576 0.494 0.721
EDUCATION_F=13 - 20.9%
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 275 13 0.957 0.0117 0.934 0.980
24 240 13 0.910 0.0168 0.878 0.944
36 198 7 0.881 0.0196 0.844 0.920
48 171 6 0.853 0.0220 0.811 0.898
60 138 10 0.800 0.0264 0.750 0.853
120 25 20 0.583 0.0491 0.494 0.687
EDUCATION_F=7 - 12.9%
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 401 20 0.955 0.00986 0.936 0.974
24 352 14 0.920 0.01316 0.895 0.946
36 291 20 0.864 0.01735 0.831 0.899
48 242 16 0.813 0.02045 0.774 0.855
60 192 21 0.738 0.02431 0.692 0.787
120 44 35 0.545 0.03483 0.481 0.618
EDUCATION_F=Less than 7%
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 361 7 0.982 0.00689 0.968 0.995
24 317 15 0.939 0.01268 0.914 0.964
36 268 9 0.911 0.01540 0.881 0.941
48 221 8 0.881 0.01810 0.846 0.917
60 187 9 0.843 0.02138 0.802 0.886
120 38 28 0.634 0.04128 0.558 0.721
## Univariable Cox Proportional Hazard Model for: EDUCATION_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ EDUCATION_F, data = data)
n= 1355, number of events= 328
(5 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
EDUCATION_F13 - 20.9% -0.0936 0.9106 0.1928 -0.485 0.627
EDUCATION_F7 - 12.9% 0.1585 1.1718 0.1757 0.902 0.367
EDUCATION_FLess than 7% -0.2447 0.7829 0.1888 -1.296 0.195
exp(coef) exp(-coef) lower .95 upper .95
EDUCATION_F13 - 20.9% 0.9106 1.0981 0.6241 1.329
EDUCATION_F7 - 12.9% 1.1718 0.8534 0.8305 1.653
EDUCATION_FLess than 7% 0.7829 1.2773 0.5408 1.133
Concordance= 0.552 (se = 0.017 )
Rsquare= 0.006 (max possible= 0.956 )
Likelihood ratio test= 8.76 on 3 df, p=0.03268
Wald test = 8.7 on 3 df, p=0.03359
Score (logrank) test = 8.78 on 3 df, p=0.03229
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: EDUCATION_F



Urban/Rural
uni_var(test_var = "U_R_F", data_imp = data)
_________________________________________________
## U_R_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ U_R_F, data = data)
40 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
U_R_F=Metro 1106 264 150 128.2 NA
U_R_F=Urban 187 50 133 108.0 NA
U_R_F=Rural 27 6 NA 97.2 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ U_R_F, data = data)
40 observations deleted due to missingness
U_R_F=Metro
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 965 39 0.963 0.00586 0.951 0.974
24 843 39 0.922 0.00850 0.906 0.939
36 709 32 0.884 0.01043 0.864 0.905
48 593 25 0.851 0.01201 0.828 0.875
60 482 40 0.790 0.01456 0.762 0.819
120 105 75 0.593 0.02410 0.547 0.642
U_R_F=Urban
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 164 6 0.966 0.0135 0.940 0.993
24 139 11 0.899 0.0233 0.854 0.946
36 116 7 0.850 0.0284 0.796 0.908
48 99 6 0.805 0.0324 0.744 0.871
60 82 3 0.780 0.0345 0.715 0.850
120 14 15 0.561 0.0582 0.458 0.688
U_R_F=Rural
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 25 0 1.000 0.0000 1.000 1.00
24 24 1 0.960 0.0392 0.886 1.00
36 19 1 0.912 0.0598 0.802 1.00
48 15 1 0.855 0.0787 0.714 1.00
60 13 0 0.855 0.0787 0.714 1.00
120 2 3 0.528 0.1612 0.290 0.96
## Univariable Cox Proportional Hazard Model for: U_R_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ U_R_F, data = data)
n= 1320, number of events= 320
(40 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
U_R_FUrban 0.1540 1.1665 0.1544 0.997 0.319
U_R_FRural -0.1929 0.8246 0.4129 -0.467 0.640
exp(coef) exp(-coef) lower .95 upper .95
U_R_FUrban 1.1665 0.8573 0.8618 1.579
U_R_FRural 0.8246 1.2128 0.3671 1.852
Concordance= 0.516 (se = 0.012 )
Rsquare= 0.001 (max possible= 0.955 )
Likelihood ratio test= 1.25 on 2 df, p=0.5341
Wald test = 1.27 on 2 df, p=0.5292
Score (logrank) test = 1.28 on 2 df, p=0.5283
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: U_R_F



Year
uni_var(test_var = "YEAR_OF_DIAGNOSIS", data_imp = data)
_________________________________________________
## YEAR_OF_DIAGNOSIS
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ YEAR_OF_DIAGNOSIS, data = data)
n events median 0.95LCL 0.95UCL
YEAR_OF_DIAGNOSIS=2004 84 29 NA 141.8 NA
YEAR_OF_DIAGNOSIS=2005 89 37 NA 97.4 NA
YEAR_OF_DIAGNOSIS=2006 102 34 NA 124.8 NA
YEAR_OF_DIAGNOSIS=2007 114 43 125.1 112.8 NA
YEAR_OF_DIAGNOSIS=2008 123 39 NA 106.7 NA
YEAR_OF_DIAGNOSIS=2009 110 28 NA 100.4 NA
YEAR_OF_DIAGNOSIS=2010 117 26 NA NA NA
YEAR_OF_DIAGNOSIS=2011 125 29 78.3 78.3 NA
YEAR_OF_DIAGNOSIS=2012 103 16 71.5 68.4 NA
YEAR_OF_DIAGNOSIS=2013 118 24 NA NA NA
YEAR_OF_DIAGNOSIS=2014 121 12 NA NA NA
YEAR_OF_DIAGNOSIS=2015 154 12 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ YEAR_OF_DIAGNOSIS, data = data)
YEAR_OF_DIAGNOSIS=2004
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 77 2 0.975 0.0173 0.942 1.000
24 75 1 0.963 0.0212 0.922 1.000
36 71 4 0.911 0.0320 0.851 0.976
48 67 3 0.872 0.0378 0.801 0.949
60 63 4 0.820 0.0436 0.739 0.910
120 38 7 0.716 0.0531 0.619 0.828
YEAR_OF_DIAGNOSIS=2005
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 76 6 0.931 0.0271 0.879 0.986
24 72 4 0.882 0.0351 0.816 0.954
36 70 1 0.870 0.0367 0.801 0.945
48 64 4 0.819 0.0424 0.740 0.907
60 58 6 0.742 0.0487 0.653 0.844
120 37 13 0.563 0.0570 0.462 0.687
YEAR_OF_DIAGNOSIS=2006
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 86 4 0.959 0.0201 0.921 0.999
24 80 3 0.925 0.0273 0.873 0.980
36 74 3 0.889 0.0331 0.827 0.957
48 67 5 0.829 0.0405 0.753 0.912
60 60 4 0.779 0.0450 0.696 0.873
120 36 12 0.607 0.0563 0.506 0.728
YEAR_OF_DIAGNOSIS=2007
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 106 4 0.964 0.0175 0.931 0.999
24 98 6 0.909 0.0275 0.857 0.964
36 94 2 0.890 0.0299 0.833 0.951
48 91 3 0.862 0.0332 0.799 0.929
60 84 6 0.805 0.0383 0.733 0.883
120 14 20 0.553 0.0569 0.452 0.677
YEAR_OF_DIAGNOSIS=2008
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 112 6 0.950 0.0200 0.911 0.990
24 103 3 0.923 0.0247 0.876 0.973
36 94 7 0.859 0.0327 0.797 0.926
48 84 5 0.813 0.0370 0.743 0.888
60 83 0 0.813 0.0370 0.743 0.888
YEAR_OF_DIAGNOSIS=2009
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 99 3 0.971 0.0163 0.940 1.000
24 94 3 0.942 0.0232 0.897 0.988
36 91 1 0.931 0.0251 0.883 0.982
48 83 5 0.879 0.0328 0.817 0.946
60 71 7 0.801 0.0411 0.724 0.885
YEAR_OF_DIAGNOSIS=2010
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 105 4 0.965 0.0173 0.931 0.999
24 95 6 0.909 0.0275 0.857 0.964
36 88 4 0.870 0.0325 0.808 0.936
48 84 1 0.860 0.0337 0.796 0.928
60 78 4 0.818 0.0379 0.748 0.896
YEAR_OF_DIAGNOSIS=2011
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 110 3 0.975 0.0142 0.948 1.000
24 104 4 0.939 0.0223 0.896 0.984
36 101 2 0.921 0.0253 0.873 0.972
48 90 2 0.902 0.0283 0.848 0.959
60 66 12 0.774 0.0420 0.695 0.861
YEAR_OF_DIAGNOSIS=2012
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 91 2 0.979 0.0148 0.950 1.000
24 84 3 0.946 0.0235 0.901 0.993
36 74 5 0.889 0.0333 0.826 0.956
48 63 2 0.864 0.0366 0.795 0.939
60 29 1 0.848 0.0391 0.775 0.929
YEAR_OF_DIAGNOSIS=2013
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 104 7 0.938 0.0226 0.895 0.984
24 92 6 0.882 0.0308 0.824 0.944
36 77 8 0.802 0.0390 0.729 0.882
48 31 3 0.750 0.0467 0.664 0.848
YEAR_OF_DIAGNOSIS=2014
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 96 4 0.963 0.0183 0.928 0.999
24 81 5 0.911 0.0285 0.857 0.968
36 30 2 0.888 0.0321 0.827 0.953
YEAR_OF_DIAGNOSIS=2015
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 122 3 0.978 0.0128 0.953 1.000
24 54 8 0.888 0.0329 0.826 0.955
## Univariable Cox Proportional Hazard Model for: YEAR_OF_DIAGNOSIS
X matrix deemed to be singular; variable 12
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ YEAR_OF_DIAGNOSIS, data = data)
n= 1360, number of events= 329
coef exp(coef) se(coef) z Pr(>|z|)
YEAR_OF_DIAGNOSIS2005 0.3673 1.4439 0.2519 1.458 0.14482
YEAR_OF_DIAGNOSIS2006 0.2749 1.3164 0.2582 1.065 0.28707
YEAR_OF_DIAGNOSIS2007 0.4297 1.5369 0.2491 1.725 0.08450 .
YEAR_OF_DIAGNOSIS2008 0.3854 1.4702 0.2554 1.509 0.13125
YEAR_OF_DIAGNOSIS2009 0.2419 1.2737 0.2760 0.877 0.38075
YEAR_OF_DIAGNOSIS2010 0.2608 1.2979 0.2823 0.924 0.35568
YEAR_OF_DIAGNOSIS2011 0.4533 1.5736 0.2769 1.637 0.10157
YEAR_OF_DIAGNOSIS2012 0.2886 1.3346 0.3253 0.887 0.37490
YEAR_OF_DIAGNOSIS2013 0.8195 2.2693 0.2945 2.783 0.00539 **
YEAR_OF_DIAGNOSIS2014 0.4811 1.6178 0.3615 1.331 0.18331
YEAR_OF_DIAGNOSIS2015 0.5897 1.8035 0.3659 1.612 0.10701
YEAR_OF_DIAGNOSIS2016 NA NA 0.0000 NA NA
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
YEAR_OF_DIAGNOSIS2005 1.444 0.6926 0.8812 2.366
YEAR_OF_DIAGNOSIS2006 1.316 0.7597 0.7936 2.184
YEAR_OF_DIAGNOSIS2007 1.537 0.6507 0.9432 2.504
YEAR_OF_DIAGNOSIS2008 1.470 0.6802 0.8913 2.425
YEAR_OF_DIAGNOSIS2009 1.274 0.7851 0.7415 2.188
YEAR_OF_DIAGNOSIS2010 1.298 0.7705 0.7463 2.257
YEAR_OF_DIAGNOSIS2011 1.574 0.6355 0.9145 2.708
YEAR_OF_DIAGNOSIS2012 1.335 0.7493 0.7055 2.525
YEAR_OF_DIAGNOSIS2013 2.269 0.4407 1.2742 4.042
YEAR_OF_DIAGNOSIS2014 1.618 0.6181 0.7965 3.286
YEAR_OF_DIAGNOSIS2015 1.803 0.5545 0.8804 3.694
YEAR_OF_DIAGNOSIS2016 NA NA NA NA
Concordance= 0.542 (se = 0.018 )
Rsquare= 0.007 (max possible= 0.956 )
Likelihood ratio test= 9.57 on 11 df, p=0.5696
Wald test = 9.7 on 11 df, p=0.558
Score (logrank) test = 9.85 on 11 df, p=0.5435
Removed 2 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: YEAR_OF_DIAGNOSIS
This manual palette can handle a maximum of 10 values. You have supplied 12.



Primary Site
uni_var(test_var = "SITE_TEXT", data_imp = data)
_________________________________________________
## SITE_TEXT
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SITE_TEXT, data = data)
n events median 0.95LCL 0.95UCL
SITE_TEXT=C44.2 External ear 2 0 NA NA NA
SITE_TEXT=C44.3 Skin of ear and unspecified parts of face 2 1 7.95 NA NA
SITE_TEXT=C44.4 Skin of scalp and neck 3 0 NA NA NA
SITE_TEXT=C44.5 Skin of trunk 287 86 131.91 81.2 NA
SITE_TEXT=C44.6 Skin of upper limb and shoulder 7 2 NA 50.2 NA
SITE_TEXT=C44.7 Skin of lower limb and hip 12 5 81.81 70.2 NA
SITE_TEXT=C44.8 Overlapping lesion of skin 11 7 32.79 20.3 NA
SITE_TEXT=C44.9 Skin, NOS 19 10 55.92 30.2 NA
SITE_TEXT=C51.0 Labium majus 92 16 NA NA NA
SITE_TEXT=C51.1 Labium minus 15 3 NA 85.4 NA
SITE_TEXT=C51.2 Clitoris 2 0 NA NA NA
SITE_TEXT=C51.8 Overlapping lesion of vulva 60 16 149.62 128.5 NA
SITE_TEXT=C51.9 Vulva, NOS 822 176 155.43 128.2 NA
SITE_TEXT=C52.9 Vagina, NOS 1 0 NA NA NA
SITE_TEXT=C60.2 Body of penis 1 0 NA NA NA
SITE_TEXT=C60.8 Overlapping lesion of penis 2 0 NA NA NA
SITE_TEXT=C60.9 Penis 22 7 108.06 73.2 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SITE_TEXT, data = data)
SITE_TEXT=C44.2 External ear
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 0 1 0 1 1
24 2 0 1 0 1 1
36 1 0 1 0 1 1
48 1 0 1 0 1 1
60 1 0 1 0 1 1
120 1 0 1 0 1 1
SITE_TEXT=C44.3 Skin of ear and unspecified parts of face
time n.risk n.event survival std.err lower 95% CI upper 95% CI
SITE_TEXT=C44.4 Skin of scalp and neck
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 3 0 1 0 1 1
24 3 0 1 0 1 1
36 2 0 1 0 1 1
48 2 0 1 0 1 1
60 2 0 1 0 1 1
SITE_TEXT=C44.5 Skin of trunk
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 245 11 0.960 0.0119 0.937 0.983
24 207 15 0.898 0.0191 0.861 0.936
36 165 14 0.833 0.0243 0.787 0.882
48 129 13 0.763 0.0291 0.708 0.822
60 104 11 0.694 0.0330 0.633 0.762
120 17 20 0.503 0.0452 0.422 0.600
SITE_TEXT=C44.6 Skin of upper limb and shoulder
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 6 1 0.857 0.132 0.633 1
24 3 0 0.857 0.132 0.633 1
36 3 0 0.857 0.132 0.633 1
48 3 0 0.857 0.132 0.633 1
60 2 1 0.571 0.249 0.243 1
SITE_TEXT=C44.7 Skin of lower limb and hip
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 10 1 0.909 0.0867 0.7541 1
24 9 1 0.818 0.1163 0.6192 1
36 4 0 0.818 0.1163 0.6192 1
48 4 0 0.818 0.1163 0.6192 1
60 4 0 0.818 0.1163 0.6192 1
120 1 2 0.273 0.2260 0.0537 1
SITE_TEXT=C44.8 Overlapping lesion of skin
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 8 2 0.8 0.126 0.587 1.000
24 5 3 0.5 0.158 0.269 0.929
36 5 0 0.5 0.158 0.269 0.929
48 4 1 0.4 0.155 0.187 0.855
60 4 0 0.4 0.155 0.187 0.855
SITE_TEXT=C44.9 Skin, NOS
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 16 1 0.947 0.0512 0.852 1.000
24 12 2 0.820 0.0953 0.653 1.000
36 8 3 0.615 0.1249 0.413 0.916
48 7 0 0.615 0.1249 0.413 0.916
60 4 3 0.351 0.1354 0.165 0.748
120 2 1 0.264 0.1269 0.103 0.677
SITE_TEXT=C51.0 Labium majus
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 79 2 0.977 0.0159 0.947 1.000
24 68 3 0.938 0.0268 0.887 0.992
36 60 0 0.938 0.0268 0.887 0.992
48 49 2 0.904 0.0350 0.838 0.976
60 47 0 0.904 0.0350 0.838 0.976
120 12 9 0.661 0.0785 0.523 0.834
SITE_TEXT=C51.1 Labium minus
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 13 1 0.929 0.0688 0.803 1
24 11 0 0.929 0.0688 0.803 1
36 10 1 0.844 0.1019 0.666 1
48 8 0 0.844 0.1019 0.666 1
60 7 0 0.844 0.1019 0.666 1
120 1 1 0.703 0.1540 0.458 1
SITE_TEXT=C51.2 Clitoris
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 0 1 0 1 1
24 1 0 1 0 1 1
36 1 0 1 0 1 1
48 1 0 1 0 1 1
60 1 0 1 0 1 1
SITE_TEXT=C51.8 Overlapping lesion of vulva
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 49 3 0.946 0.0303 0.888 1.000
24 49 0 0.946 0.0303 0.888 1.000
36 42 3 0.884 0.0447 0.801 0.976
48 36 2 0.840 0.0524 0.743 0.949
60 32 1 0.814 0.0566 0.711 0.933
120 9 5 0.645 0.0833 0.501 0.831
SITE_TEXT=C51.9 Vulva, NOS
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 726 24 0.969 0.00618 0.957 0.981
24 643 27 0.932 0.00922 0.914 0.950
36 545 19 0.902 0.01119 0.880 0.924
48 464 15 0.876 0.01278 0.851 0.901
60 373 27 0.820 0.01580 0.790 0.852
120 80 53 0.620 0.02887 0.566 0.679
SITE_TEXT=C52.9 Vagina, NOS
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
24 1 0 1 0 1 1
36 1 0 1 0 1 1
48 1 0 1 0 1 1
SITE_TEXT=C60.2 Body of penis
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
24 1 0 1 0 1 1
36 1 0 1 0 1 1
48 1 0 1 0 1 1
60 1 0 1 0 1 1
SITE_TEXT=C60.8 Overlapping lesion of penis
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 0 1 0 1 1
24 1 0 1 0 1 1
36 1 0 1 0 1 1
48 1 0 1 0 1 1
60 1 0 1 0 1 1
120 1 0 1 0 1 1
SITE_TEXT=C60.9 Penis
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 21 1 0.955 0.0444 0.8714 1
24 16 1 0.898 0.0687 0.7734 1
36 15 0 0.898 0.0687 0.7734 1
48 13 1 0.834 0.0888 0.6771 1
60 9 1 0.770 0.1026 0.5931 1
120 1 3 0.257 0.1990 0.0562 1
## Univariable Cox Proportional Hazard Model for: SITE_TEXT
Loglik converged before variable 45,47,56,59,62,63 ; beta may be infinite. X matrix deemed to be singular; variable 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 53 60 61 64 65 66 67 68 69 70 71 72 73
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SITE_TEXT, data = data)
n= 1360, number of events= 329
coef exp(coef) se(coef) z Pr(>|z|)
SITE_TEXTC00.1 External Lip: Lower NOS NA NA 0.000e+00 NA NA
SITE_TEXTC00.2 External Lip: NOS NA NA 0.000e+00 NA NA
SITE_TEXTC00.3 Lip: Upper Mucosa NA NA 0.000e+00 NA NA
SITE_TEXTC00.4 Lip: Lower Mucosa NA NA 0.000e+00 NA NA
SITE_TEXTC00.5 Lip: Mucosa NOS NA NA 0.000e+00 NA NA
SITE_TEXTC00.6 Lip: Commissure NA NA 0.000e+00 NA NA
SITE_TEXTC00.8 Lip: Overlapping NA NA 0.000e+00 NA NA
SITE_TEXTC00.9 Lip NOS NA NA 0.000e+00 NA NA
SITE_TEXTC01.9 Tongue: Base NOS NA NA 0.000e+00 NA NA
SITE_TEXTC02.0 Tongue: Dorsal NOS NA NA 0.000e+00 NA NA
SITE_TEXTC02.1 Tongue: Border, Tip NA NA 0.000e+00 NA NA
SITE_TEXTC02.2 Tongue: Ventral NOS NA NA 0.000e+00 NA NA
SITE_TEXTC02.3 Tongue: Anterior NOS NA NA 0.000e+00 NA NA
SITE_TEXTC02.4 Lingual Tonsil NA NA 0.000e+00 NA NA
SITE_TEXTC02.8 Tongue: Overlapping NA NA 0.000e+00 NA NA
SITE_TEXTC02.9 Tongue: NOS NA NA 0.000e+00 NA NA
SITE_TEXTC03.0 Gum: Upper NA NA 0.000e+00 NA NA
SITE_TEXTC03.1 Gum: Lower NA NA 0.000e+00 NA NA
SITE_TEXTC03.9 Gum NOS NA NA 0.000e+00 NA NA
SITE_TEXTC04.0 Mouth: Anterior Floor NA NA 0.000e+00 NA NA
SITE_TEXTC04.1 Mouth: Lateral Floor NA NA 0.000e+00 NA NA
SITE_TEXTC04.9 Floor of Mouth NOS NA NA 0.000e+00 NA NA
SITE_TEXTC05.0 Hard Palate NA NA 0.000e+00 NA NA
SITE_TEXTC05.1 Soft Palate NOS NA NA 0.000e+00 NA NA
SITE_TEXTC05.2 Uvula NA NA 0.000e+00 NA NA
SITE_TEXTC05.8 Palate: Overlapping NA NA 0.000e+00 NA NA
SITE_TEXTC05.9 Palate NOS NA NA 0.000e+00 NA NA
SITE_TEXTC06.0 Cheek Mucosa NA NA 0.000e+00 NA NA
SITE_TEXTC06.1 Mouth: Vestibule NA NA 0.000e+00 NA NA
SITE_TEXTC06.2 Retromolar Area NA NA 0.000e+00 NA NA
SITE_TEXTC06.8 Mouth: Other Overlapping NA NA 0.000e+00 NA NA
SITE_TEXTC06.9 Mouth NOS NA NA 0.000e+00 NA NA
SITE_TEXTC07.9 Parotid Gland NA NA 0.000e+00 NA NA
SITE_TEXTC09.8 Tonsil: Overlapping NA NA 0.000e+00 NA NA
SITE_TEXTC09.9 Tonsil NOS NA NA 0.000e+00 NA NA
SITE_TEXTC11.1 Nasopharynx: Poster Wall NA NA 0.000e+00 NA NA
SITE_TEXTC14.2 Waldeyer Ring NA NA 0.000e+00 NA NA
SITE_TEXTC30.0 Nasal Cavity NA NA 0.000e+00 NA NA
SITE_TEXTC37.9 Thymus NA NA 0.000e+00 NA NA
SITE_TEXTC42.0 Blood NA NA 0.000e+00 NA NA
SITE_TEXTC42.2 Spleen NA NA 0.000e+00 NA NA
SITE_TEXTC42.4 Hematopoietic NOS NA NA 0.000e+00 NA NA
SITE_TEXTC44.0 Skin of lip, NOS NA NA 0.000e+00 NA NA
SITE_TEXTC44.1 Eyelid NA NA 0.000e+00 NA NA
SITE_TEXTC44.2 External ear -1.556e+01 1.740e-07 2.273e+03 -0.007 0.9945
SITE_TEXTC44.3 Skin of ear and unspecified parts of face 3.212e+00 2.482e+01 1.086e+00 2.958 0.0031 **
SITE_TEXTC44.4 Skin of scalp and neck -1.555e+01 1.769e-07 2.329e+03 -0.007 0.9947
SITE_TEXTC44.5 Skin of trunk 5.459e-02 1.056e+00 3.932e-01 0.139 0.8896
SITE_TEXTC44.6 Skin of upper limb and shoulder 2.825e-01 1.326e+00 8.020e-01 0.352 0.7247
SITE_TEXTC44.7 Skin of lower limb and hip 5.495e-01 1.732e+00 5.859e-01 0.938 0.3483
SITE_TEXTC44.8 Overlapping lesion of skin 1.017e+00 2.766e+00 5.348e-01 1.902 0.0572 .
SITE_TEXTC44.9 Skin, NOS 7.677e-01 2.155e+00 4.933e-01 1.556 0.1196
SITE_TEXTC50.0 Nipple NA NA 0.000e+00 NA NA
SITE_TEXTC51.0 Labium majus -7.908e-01 4.535e-01 4.537e-01 -1.743 0.0813 .
SITE_TEXTC51.1 Labium minus -6.349e-01 5.300e-01 6.908e-01 -0.919 0.3580
SITE_TEXTC51.2 Clitoris -1.555e+01 1.760e-07 2.937e+03 -0.005 0.9958
SITE_TEXTC51.8 Overlapping lesion of vulva -3.929e-01 6.751e-01 4.536e-01 -0.866 0.3864
SITE_TEXTC51.9 Vulva, NOS -5.073e-01 6.021e-01 3.857e-01 -1.315 0.1884
SITE_TEXTC52.9 Vagina, NOS -1.554e+01 1.787e-07 4.804e+03 -0.003 0.9974
SITE_TEXTC60.0 Prepuce NA NA 0.000e+00 NA NA
SITE_TEXTC60.1 Glans penis NA NA 0.000e+00 NA NA
SITE_TEXTC60.2 Body of penis -1.554e+01 1.776e-07 3.997e+03 -0.004 0.9969
SITE_TEXTC60.8 Overlapping lesion of penis -1.556e+01 1.749e-07 2.565e+03 -0.006 0.9952
SITE_TEXTC60.9 Penis NA NA 0.000e+00 NA NA
SITE_TEXTC63.2 Scrotum, NOS NA NA 0.000e+00 NA NA
SITE_TEXTC77.0 Lymph Nodes: HeadFaceNeck NA NA 0.000e+00 NA NA
SITE_TEXTC77.1 Intrathoracic Lymph Nodes NA NA 0.000e+00 NA NA
SITE_TEXTC77.2 Intra-abdominal LymphNodes NA NA 0.000e+00 NA NA
SITE_TEXTC77.3 Lymph Nodes of axilla or arm NA NA 0.000e+00 NA NA
SITE_TEXTC77.4 Lymph Nodes: Leg NA NA 0.000e+00 NA NA
SITE_TEXTC77.5 Pelvic Lymph Nodes NA NA 0.000e+00 NA NA
SITE_TEXTC77.8 Lymph Nodes: multiple region NA NA 0.000e+00 NA NA
SITE_TEXTC77.9 Lymph Node NOS NA NA 0.000e+00 NA NA
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
SITE_TEXTC00.1 External Lip: Lower NOS NA NA NA NA
SITE_TEXTC00.2 External Lip: NOS NA NA NA NA
SITE_TEXTC00.3 Lip: Upper Mucosa NA NA NA NA
SITE_TEXTC00.4 Lip: Lower Mucosa NA NA NA NA
SITE_TEXTC00.5 Lip: Mucosa NOS NA NA NA NA
SITE_TEXTC00.6 Lip: Commissure NA NA NA NA
SITE_TEXTC00.8 Lip: Overlapping NA NA NA NA
SITE_TEXTC00.9 Lip NOS NA NA NA NA
SITE_TEXTC01.9 Tongue: Base NOS NA NA NA NA
SITE_TEXTC02.0 Tongue: Dorsal NOS NA NA NA NA
SITE_TEXTC02.1 Tongue: Border, Tip NA NA NA NA
SITE_TEXTC02.2 Tongue: Ventral NOS NA NA NA NA
SITE_TEXTC02.3 Tongue: Anterior NOS NA NA NA NA
SITE_TEXTC02.4 Lingual Tonsil NA NA NA NA
SITE_TEXTC02.8 Tongue: Overlapping NA NA NA NA
SITE_TEXTC02.9 Tongue: NOS NA NA NA NA
SITE_TEXTC03.0 Gum: Upper NA NA NA NA
SITE_TEXTC03.1 Gum: Lower NA NA NA NA
SITE_TEXTC03.9 Gum NOS NA NA NA NA
SITE_TEXTC04.0 Mouth: Anterior Floor NA NA NA NA
SITE_TEXTC04.1 Mouth: Lateral Floor NA NA NA NA
SITE_TEXTC04.9 Floor of Mouth NOS NA NA NA NA
SITE_TEXTC05.0 Hard Palate NA NA NA NA
SITE_TEXTC05.1 Soft Palate NOS NA NA NA NA
SITE_TEXTC05.2 Uvula NA NA NA NA
SITE_TEXTC05.8 Palate: Overlapping NA NA NA NA
SITE_TEXTC05.9 Palate NOS NA NA NA NA
SITE_TEXTC06.0 Cheek Mucosa NA NA NA NA
SITE_TEXTC06.1 Mouth: Vestibule NA NA NA NA
SITE_TEXTC06.2 Retromolar Area NA NA NA NA
SITE_TEXTC06.8 Mouth: Other Overlapping NA NA NA NA
SITE_TEXTC06.9 Mouth NOS NA NA NA NA
SITE_TEXTC07.9 Parotid Gland NA NA NA NA
SITE_TEXTC09.8 Tonsil: Overlapping NA NA NA NA
SITE_TEXTC09.9 Tonsil NOS NA NA NA NA
SITE_TEXTC11.1 Nasopharynx: Poster Wall NA NA NA NA
SITE_TEXTC14.2 Waldeyer Ring NA NA NA NA
SITE_TEXTC30.0 Nasal Cavity NA NA NA NA
SITE_TEXTC37.9 Thymus NA NA NA NA
SITE_TEXTC42.0 Blood NA NA NA NA
SITE_TEXTC42.2 Spleen NA NA NA NA
SITE_TEXTC42.4 Hematopoietic NOS NA NA NA NA
SITE_TEXTC44.0 Skin of lip, NOS NA NA NA NA
SITE_TEXTC44.1 Eyelid NA NA NA NA
SITE_TEXTC44.2 External ear 1.740e-07 5.749e+06 0.0000 Inf
SITE_TEXTC44.3 Skin of ear and unspecified parts of face 2.482e+01 4.029e-02 2.9546 208.468
SITE_TEXTC44.4 Skin of scalp and neck 1.769e-07 5.652e+06 0.0000 Inf
SITE_TEXTC44.5 Skin of trunk 1.056e+00 9.469e-01 0.4887 2.282
SITE_TEXTC44.6 Skin of upper limb and shoulder 1.326e+00 7.539e-01 0.2754 6.388
SITE_TEXTC44.7 Skin of lower limb and hip 1.732e+00 5.772e-01 0.5495 5.462
SITE_TEXTC44.8 Overlapping lesion of skin 2.766e+00 3.616e-01 0.9694 7.889
SITE_TEXTC44.9 Skin, NOS 2.155e+00 4.641e-01 0.8195 5.666
SITE_TEXTC50.0 Nipple NA NA NA NA
SITE_TEXTC51.0 Labium majus 4.535e-01 2.205e+00 0.1864 1.103
SITE_TEXTC51.1 Labium minus 5.300e-01 1.887e+00 0.1369 2.052
SITE_TEXTC51.2 Clitoris 1.760e-07 5.683e+06 0.0000 Inf
SITE_TEXTC51.8 Overlapping lesion of vulva 6.751e-01 1.481e+00 0.2775 1.642
SITE_TEXTC51.9 Vulva, NOS 6.021e-01 1.661e+00 0.2828 1.282
SITE_TEXTC52.9 Vagina, NOS 1.787e-07 5.596e+06 0.0000 Inf
SITE_TEXTC60.0 Prepuce NA NA NA NA
SITE_TEXTC60.1 Glans penis NA NA NA NA
SITE_TEXTC60.2 Body of penis 1.776e-07 5.630e+06 0.0000 Inf
SITE_TEXTC60.8 Overlapping lesion of penis 1.749e-07 5.719e+06 0.0000 Inf
SITE_TEXTC60.9 Penis NA NA NA NA
SITE_TEXTC63.2 Scrotum, NOS NA NA NA NA
SITE_TEXTC77.0 Lymph Nodes: HeadFaceNeck NA NA NA NA
SITE_TEXTC77.1 Intrathoracic Lymph Nodes NA NA NA NA
SITE_TEXTC77.2 Intra-abdominal LymphNodes NA NA NA NA
SITE_TEXTC77.3 Lymph Nodes of axilla or arm NA NA NA NA
SITE_TEXTC77.4 Lymph Nodes: Leg NA NA NA NA
SITE_TEXTC77.5 Pelvic Lymph Nodes NA NA NA NA
SITE_TEXTC77.8 Lymph Nodes: multiple region NA NA NA NA
SITE_TEXTC77.9 Lymph Node NOS NA NA NA NA
Concordance= 0.593 (se = 0.015 )
Rsquare= 0.039 (max possible= 0.956 )
Likelihood ratio test= 53.58 on 16 df, p=6.07e-06
Wald test = 61.46 on 16 df, p=2.971e-07
Score (logrank) test = 88.8 on 16 df, p=4.164e-12
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 58 rows containing missing values (geom_errorbar).Removed 74 rows containing missing values (geom_text).Removed 74 rows containing missing values (geom_text).Removed 74 rows containing missing values (geom_text).Removed 74 rows containing missing values (geom_text).Removed 74 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: SITE_TEXT
This manual palette can handle a maximum of 10 values. You have supplied 17.



Histology
#uni_var(test_var = "HISTOLOGY_F_LIM", data_imp = data)
Grade
uni_var(test_var = "GRADE_F", data_imp = data)
_________________________________________________
## GRADE_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ GRADE_F, data = data)
n events median 0.95LCL 0.95UCL
GRADE_F=Gr I: Well Diff 38 10 131.9 70.3 NA
GRADE_F=Gr II: Mod Diff 30 15 67.1 51.4 NA
GRADE_F=Gr III: Poor Diff 36 23 29.3 21.6 NA
GRADE_F=NA/Unkown 1256 281 155.4 133.1 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ GRADE_F, data = data)
GRADE_F=Gr I: Well Diff
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 37 0 1.000 0.0000 1.000 1.00
24 34 2 0.945 0.0377 0.874 1.00
36 30 1 0.916 0.0467 0.829 1.00
48 20 0 0.916 0.0467 0.829 1.00
60 15 3 0.771 0.0861 0.620 0.96
120 4 3 0.591 0.1131 0.406 0.86
GRADE_F=Gr II: Mod Diff
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 25 3 0.893 0.0585 0.785 1.000
24 18 5 0.709 0.0867 0.558 0.901
36 15 0 0.709 0.0867 0.558 0.901
48 14 1 0.662 0.0929 0.503 0.872
60 10 3 0.516 0.1041 0.347 0.766
120 1 3 0.199 0.1510 0.045 0.880
GRADE_F=Gr III: Poor Diff
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 28 4 0.884 0.0548 0.7826 0.998
24 15 10 0.537 0.0920 0.3843 0.752
36 10 4 0.384 0.0924 0.2396 0.615
48 9 1 0.345 0.0907 0.2065 0.578
60 8 1 0.307 0.0884 0.1747 0.540
120 1 2 0.134 0.1041 0.0294 0.614
GRADE_F=NA/Unkown
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1094 41 0.965 0.00530 0.955 0.976
24 965 35 0.933 0.00742 0.919 0.948
36 809 35 0.897 0.00935 0.879 0.915
48 681 32 0.859 0.01108 0.838 0.881
60 559 37 0.809 0.01315 0.784 0.835
120 119 87 0.607 0.02270 0.564 0.653
## Univariable Cox Proportional Hazard Model for: GRADE_F
X matrix deemed to be singular; variable 3 4 5 6 7
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ GRADE_F, data = data)
n= 1360, number of events= 329
coef exp(coef) se(coef) z Pr(>|z|)
GRADE_FGr II: Mod Diff 0.8652 2.3754 0.4085 2.118 0.034169 *
GRADE_FGr III: Poor Diff 1.4655 4.3296 0.3794 3.863 0.000112 ***
GRADE_FGr IV: Undiff/Anaplastic NA NA 0.0000 NA NA
GRADE_F5 NA NA 0.0000 NA NA
GRADE_F6 NA NA 0.0000 NA NA
GRADE_F7 NA NA 0.0000 NA NA
GRADE_F8 NA NA 0.0000 NA NA
GRADE_FNA/Unkown -0.1716 0.8423 0.3220 -0.533 0.594005
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
GRADE_FGr II: Mod Diff 2.3754 0.421 1.0667 5.290
GRADE_FGr III: Poor Diff 4.3296 0.231 2.0583 9.107
GRADE_FGr IV: Undiff/Anaplastic NA NA NA NA
GRADE_F5 NA NA NA NA
GRADE_F6 NA NA NA NA
GRADE_F7 NA NA NA NA
GRADE_F8 NA NA NA NA
GRADE_FNA/Unkown 0.8423 1.187 0.4481 1.583
Concordance= 0.553 (se = 0.008 )
Rsquare= 0.034 (max possible= 0.956 )
Likelihood ratio test= 47.18 on 3 df, p=3.183e-10
Wald test = 68.17 on 3 df, p=1.055e-14
Score (logrank) test = 82.42 on 3 df, p=0
Removed 6 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: GRADE_F



Clinical T Stage
#uni_var(test_var = "TNM_CLIN_T", data_imp = data)
Clinical N Stage
#uni_var(test_var = "TNM_CLIN_N", data_imp = data)
Clinical M Stage
#uni_var(test_var = "TNM_CLIN_M", data_imp = data)
Clinical Stage Group
uni_var(test_var = "TNM_CLIN_STAGE_GROUP", data_imp = data)
_________________________________________________
## TNM_CLIN_STAGE_GROUP
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_CLIN_STAGE_GROUP, data = data)
n events median 0.95LCL 0.95UCL
TNM_CLIN_STAGE_GROUP=0 64 14 155.4 114.99 NA
TNM_CLIN_STAGE_GROUP=1 196 35 NA 103.66 NA
TNM_CLIN_STAGE_GROUP=1A 109 14 NA NA NA
TNM_CLIN_STAGE_GROUP=1B 119 19 NA NA NA
TNM_CLIN_STAGE_GROUP=2 184 51 121.8 97.25 NA
TNM_CLIN_STAGE_GROUP=3 15 4 NA 110.72 NA
TNM_CLIN_STAGE_GROUP=3B 1 1 20.9 NA NA
TNM_CLIN_STAGE_GROUP=4 9 7 22.2 10.81 NA
TNM_CLIN_STAGE_GROUP=4A 2 0 NA NA NA
TNM_CLIN_STAGE_GROUP=4B 5 5 12.9 6.67 NA
TNM_CLIN_STAGE_GROUP=N_A 1 0 NA NA NA
TNM_CLIN_STAGE_GROUP=99 655 179 133.4 126.09 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_CLIN_STAGE_GROUP, data = data)
TNM_CLIN_STAGE_GROUP=0
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 57 2 0.966 0.0238 0.920 1.000
24 49 2 0.930 0.0336 0.867 0.999
36 48 1 0.911 0.0379 0.840 0.989
48 39 0 0.911 0.0379 0.840 0.989
60 31 3 0.835 0.0546 0.735 0.949
120 7 5 0.612 0.1067 0.435 0.861
TNM_CLIN_STAGE_GROUP=1
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 169 7 0.962 0.0140 0.935 0.990
24 151 4 0.939 0.0180 0.904 0.974
36 126 4 0.911 0.0220 0.869 0.956
48 105 4 0.882 0.0258 0.832 0.934
60 85 5 0.836 0.0317 0.776 0.900
120 11 11 0.610 0.0665 0.492 0.755
TNM_CLIN_STAGE_GROUP=1A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 93 2 0.979 0.0144 0.951 1.000
24 82 4 0.937 0.0251 0.889 0.987
36 69 2 0.912 0.0297 0.856 0.972
48 53 0 0.912 0.0297 0.856 0.972
60 37 4 0.836 0.0457 0.751 0.930
120 9 1 0.812 0.0503 0.719 0.917
TNM_CLIN_STAGE_GROUP=1B
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 105 3 0.974 0.0146 0.946 1.000
24 92 5 0.926 0.0253 0.877 0.977
36 66 4 0.879 0.0332 0.816 0.947
48 54 1 0.864 0.0359 0.797 0.937
60 42 1 0.847 0.0391 0.774 0.927
120 3 5 0.703 0.0691 0.580 0.852
TNM_CLIN_STAGE_GROUP=2
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 163 4 0.977 0.0115 0.954 1.000
24 139 8 0.926 0.0206 0.887 0.967
36 115 6 0.883 0.0260 0.834 0.936
48 96 5 0.841 0.0309 0.782 0.904
60 82 8 0.768 0.0375 0.698 0.845
120 13 16 0.538 0.0576 0.436 0.664
TNM_CLIN_STAGE_GROUP=3
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 13 2 0.867 0.0878 0.711 1
24 13 0 0.867 0.0878 0.711 1
36 12 1 0.800 0.1033 0.621 1
48 12 0 0.800 0.1033 0.621 1
60 12 0 0.800 0.1033 0.621 1
120 1 1 0.533 0.2284 0.230 1
TNM_CLIN_STAGE_GROUP=3B
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
TNM_CLIN_STAGE_GROUP=4
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 6 3 0.667 0.157 0.4200 1.000
24 3 3 0.333 0.157 0.1323 0.840
36 2 1 0.222 0.139 0.0655 0.754
48 1 0 0.222 0.139 0.0655 0.754
60 1 0 0.222 0.139 0.0655 0.754
TNM_CLIN_STAGE_GROUP=4A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 0 1 0 1 1
24 1 0 1 0 1 1
36 1 0 1 0 1 1
TNM_CLIN_STAGE_GROUP=4B
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12.000 3.000 2.000 0.600 0.219 0.293 1.000
TNM_CLIN_STAGE_GROUP=N_A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
TNM_CLIN_STAGE_GROUP=99
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 572 23 0.963 0.00749 0.949 0.978
24 502 22 0.925 0.01084 0.904 0.946
36 425 21 0.883 0.01363 0.857 0.910
48 364 24 0.831 0.01649 0.799 0.864
60 302 23 0.775 0.01904 0.739 0.813
120 81 56 0.571 0.02868 0.518 0.630
## Univariable Cox Proportional Hazard Model for: TNM_CLIN_STAGE_GROUP
Loglik converged before variable 14,19 ; beta may be infinite. X matrix deemed to be singular; variable 4 6 7 8 10 12 15 16 18
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_CLIN_STAGE_GROUP, data = data)
n= 1360, number of events= 329
coef exp(coef) se(coef) z Pr(>|z|)
TNM_CLIN_STAGE_GROUP1 -1.658e-02 9.836e-01 3.165e-01 -0.052 0.95823
TNM_CLIN_STAGE_GROUP1A -2.947e-01 7.447e-01 3.781e-01 -0.779 0.43573
TNM_CLIN_STAGE_GROUP1B 6.078e-02 1.063e+00 3.531e-01 0.172 0.86333
TNM_CLIN_STAGE_GROUP1C NA NA 0.000e+00 NA NA
TNM_CLIN_STAGE_GROUP2 3.647e-01 1.440e+00 3.018e-01 1.208 0.22691
TNM_CLIN_STAGE_GROUP2A NA NA 0.000e+00 NA NA
TNM_CLIN_STAGE_GROUP2B NA NA 0.000e+00 NA NA
TNM_CLIN_STAGE_GROUP2C NA NA 0.000e+00 NA NA
TNM_CLIN_STAGE_GROUP3 -5.652e-02 9.450e-01 5.674e-01 -0.100 0.92064
TNM_CLIN_STAGE_GROUP3A NA NA 0.000e+00 NA NA
TNM_CLIN_STAGE_GROUP3B 2.925e+00 1.863e+01 1.040e+00 2.812 0.00492 **
TNM_CLIN_STAGE_GROUP3C NA NA 0.000e+00 NA NA
TNM_CLIN_STAGE_GROUP4 2.323e+00 1.020e+01 4.653e-01 4.992 5.99e-07 ***
TNM_CLIN_STAGE_GROUP4A -1.244e+01 3.959e-06 1.258e+03 -0.010 0.99211
TNM_CLIN_STAGE_GROUP4A1 NA NA 0.000e+00 NA NA
TNM_CLIN_STAGE_GROUP4A2 NA NA 0.000e+00 NA NA
TNM_CLIN_STAGE_GROUP4B 3.690e+00 4.003e+01 5.367e-01 6.875 6.19e-12 ***
TNM_CLIN_STAGE_GROUP4C NA NA 0.000e+00 NA NA
TNM_CLIN_STAGE_GROUPN_A -1.243e+01 4.010e-06 7.660e+03 -0.002 0.99871
TNM_CLIN_STAGE_GROUP99 2.520e-01 1.287e+00 2.776e-01 0.908 0.36398
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
TNM_CLIN_STAGE_GROUP1 9.836e-01 1.017e+00 0.5289 1.829
TNM_CLIN_STAGE_GROUP1A 7.447e-01 1.343e+00 0.3549 1.563
TNM_CLIN_STAGE_GROUP1B 1.063e+00 9.410e-01 0.5319 2.123
TNM_CLIN_STAGE_GROUP1C NA NA NA NA
TNM_CLIN_STAGE_GROUP2 1.440e+00 6.944e-01 0.7970 2.602
TNM_CLIN_STAGE_GROUP2A NA NA NA NA
TNM_CLIN_STAGE_GROUP2B NA NA NA NA
TNM_CLIN_STAGE_GROUP2C NA NA NA NA
TNM_CLIN_STAGE_GROUP3 9.450e-01 1.058e+00 0.3108 2.873
TNM_CLIN_STAGE_GROUP3A NA NA NA NA
TNM_CLIN_STAGE_GROUP3B 1.863e+01 5.366e-02 2.4263 143.117
TNM_CLIN_STAGE_GROUP3C NA NA NA NA
TNM_CLIN_STAGE_GROUP4 1.020e+01 9.802e-02 4.0985 25.396
TNM_CLIN_STAGE_GROUP4A 3.959e-06 2.526e+05 0.0000 Inf
TNM_CLIN_STAGE_GROUP4A1 NA NA NA NA
TNM_CLIN_STAGE_GROUP4A2 NA NA NA NA
TNM_CLIN_STAGE_GROUP4B 4.003e+01 2.498e-02 13.9819 114.594
TNM_CLIN_STAGE_GROUP4C NA NA NA NA
TNM_CLIN_STAGE_GROUPN_A 4.010e-06 2.494e+05 0.0000 Inf
TNM_CLIN_STAGE_GROUP99 1.287e+00 7.773e-01 0.7467 2.217
Concordance= 0.56 (se = 0.017 )
Rsquare= 0.039 (max possible= 0.956 )
Likelihood ratio test= 54.76 on 11 df, p=8.583e-08
Wald test = 97.79 on 11 df, p=4.441e-16
Score (logrank) test = 201.6 on 11 df, p=0
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 10 rows containing missing values (geom_errorbar).Removed 21 rows containing missing values (geom_text).Removed 21 rows containing missing values (geom_text).Removed 21 rows containing missing values (geom_text).Removed 21 rows containing missing values (geom_text).Removed 21 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: TNM_CLIN_STAGE_GROUP
This manual palette can handle a maximum of 10 values. You have supplied 12.



Pathologic T Stage
#uni_var(test_var = "TNM_PATH_T", data_imp = data)
Pathologic N Stage
#uni_var(test_var = "TNM_PATH_N", data_imp = data)
Pathologic M Stage
#uni_var(test_var = "TNM_PATH_M", data_imp = data)
Pathologic Stage Group
uni_var(test_var = "TNM_PATH_STAGE_GROUP", data_imp = data)
_________________________________________________
## TNM_PATH_STAGE_GROUP
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_PATH_STAGE_GROUP, data = data)
79 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
TNM_PATH_STAGE_GROUP=0 58 12 NA 128.46 NA
TNM_PATH_STAGE_GROUP=1 107 18 NA 120.94 NA
TNM_PATH_STAGE_GROUP=1A 104 18 155.4 114.99 NA
TNM_PATH_STAGE_GROUP=1B 92 13 NA NA NA
TNM_PATH_STAGE_GROUP=2 120 24 NA 130.53 NA
TNM_PATH_STAGE_GROUP=3 26 14 110.7 49.74 NA
TNM_PATH_STAGE_GROUP=3A 2 2 20.6 2.04 NA
TNM_PATH_STAGE_GROUP=3C 5 4 14.6 11.17 NA
TNM_PATH_STAGE_GROUP=4 4 2 23.6 5.06 NA
TNM_PATH_STAGE_GROUP=4A 5 3 16.9 4.34 NA
TNM_PATH_STAGE_GROUP=4B 1 1 13.5 NA NA
TNM_PATH_STAGE_GROUP=N_A 1 0 NA NA NA
TNM_PATH_STAGE_GROUP=99 756 204 133.1 115.94 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_PATH_STAGE_GROUP, data = data)
79 observations deleted due to missingness
TNM_PATH_STAGE_GROUP=0
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 52 1 0.981 0.0190 0.944 1.000
24 46 1 0.961 0.0269 0.910 1.000
36 43 1 0.939 0.0340 0.875 1.000
48 39 0 0.939 0.0340 0.875 1.000
60 33 2 0.888 0.0477 0.800 0.987
120 10 6 0.694 0.0806 0.553 0.872
TNM_PATH_STAGE_GROUP=1
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 92 1 0.990 0.00985 0.971 1.000
24 84 1 0.979 0.01503 0.950 1.000
36 76 1 0.966 0.01948 0.928 1.000
48 66 2 0.940 0.02613 0.890 0.993
60 54 4 0.879 0.03833 0.807 0.958
120 11 7 0.668 0.08129 0.526 0.848
TNM_PATH_STAGE_GROUP=1A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 97 1 0.990 0.0100 0.970 1.000
24 87 3 0.958 0.0206 0.918 0.999
36 77 3 0.923 0.0280 0.870 0.980
48 58 2 0.896 0.0331 0.834 0.963
60 45 3 0.844 0.0426 0.765 0.932
120 9 5 0.652 0.0895 0.498 0.853
TNM_PATH_STAGE_GROUP=1B
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 78 2 0.977 0.0161 0.946 1.000
24 69 1 0.963 0.0208 0.924 1.000
36 52 2 0.931 0.0302 0.874 0.992
48 41 3 0.870 0.0444 0.787 0.961
60 34 2 0.823 0.0530 0.725 0.934
120 2 3 0.723 0.0731 0.593 0.881
TNM_PATH_STAGE_GROUP=2
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 107 1 0.991 0.00897 0.974 1.000
24 93 5 0.942 0.02315 0.897 0.988
36 83 2 0.920 0.02704 0.869 0.975
48 72 3 0.884 0.03328 0.821 0.951
60 62 2 0.858 0.03706 0.788 0.933
120 19 8 0.720 0.05499 0.620 0.836
TNM_PATH_STAGE_GROUP=3
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 23 3 0.885 0.0627 0.770 1.000
24 21 2 0.808 0.0773 0.670 0.974
36 21 0 0.808 0.0773 0.670 0.974
48 18 3 0.692 0.0905 0.536 0.895
60 17 1 0.654 0.0933 0.494 0.865
120 2 4 0.294 0.1448 0.112 0.772
TNM_PATH_STAGE_GROUP=3A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 1 0.5 0.354 0.125 1
24 1 0 0.5 0.354 0.125 1
36 1 0 0.5 0.354 0.125 1
TNM_PATH_STAGE_GROUP=3C
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12.000 3.000 2.000 0.600 0.219 0.293 1.000
TNM_PATH_STAGE_GROUP=4
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 3 1 0.75 0.217 0.426 1
24 2 1 0.50 0.250 0.188 1
TNM_PATH_STAGE_GROUP=4A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 3 2 0.6 0.219 0.293 1
24 2 1 0.4 0.219 0.137 1
36 2 0 0.4 0.219 0.137 1
48 1 0 0.4 0.219 0.137 1
60 1 0 0.4 0.219 0.137 1
TNM_PATH_STAGE_GROUP=4B
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
TNM_PATH_STAGE_GROUP=N_A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
TNM_PATH_STAGE_GROUP=99
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 659 30 0.958 0.00748 0.944 0.973
24 572 29 0.915 0.01066 0.894 0.936
36 475 29 0.865 0.01353 0.839 0.892
48 402 19 0.828 0.01531 0.799 0.859
60 330 29 0.765 0.01809 0.731 0.802
120 72 60 0.552 0.02880 0.499 0.612
## Univariable Cox Proportional Hazard Model for: TNM_PATH_STAGE_GROUP
Loglik converged before variable 18 ; beta may be infinite. X matrix deemed to be singular; variable 4 6 7 8 11 15 17
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_PATH_STAGE_GROUP, data = data)
n= 1281, number of events= 315
(79 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
TNM_PATH_STAGE_GROUP1 4.124e-02 1.042e+00 3.731e-01 0.111 0.911974
TNM_PATH_STAGE_GROUP1A 6.457e-02 1.067e+00 3.732e-01 0.173 0.862617
TNM_PATH_STAGE_GROUP1B 1.515e-01 1.164e+00 4.016e-01 0.377 0.706068
TNM_PATH_STAGE_GROUP1C NA NA 0.000e+00 NA NA
TNM_PATH_STAGE_GROUP2 5.139e-02 1.053e+00 3.536e-01 0.145 0.884434
TNM_PATH_STAGE_GROUP2A NA NA 0.000e+00 NA NA
TNM_PATH_STAGE_GROUP2B NA NA 0.000e+00 NA NA
TNM_PATH_STAGE_GROUP2C NA NA 0.000e+00 NA NA
TNM_PATH_STAGE_GROUP3 9.321e-01 2.540e+00 3.937e-01 2.368 0.017900 *
TNM_PATH_STAGE_GROUP3A 3.075e+00 2.165e+01 7.676e-01 4.006 6.18e-05 ***
TNM_PATH_STAGE_GROUP3B NA NA 0.000e+00 NA NA
TNM_PATH_STAGE_GROUP3C 3.388e+00 2.961e+01 5.896e-01 5.746 9.12e-09 ***
TNM_PATH_STAGE_GROUP4 2.273e+00 9.710e+00 7.682e-01 2.959 0.003086 **
TNM_PATH_STAGE_GROUP4A 1.857e+00 6.403e+00 6.462e-01 2.874 0.004058 **
TNM_PATH_STAGE_GROUP4A1 NA NA 0.000e+00 NA NA
TNM_PATH_STAGE_GROUP4B 3.622e+00 3.743e+01 1.050e+00 3.450 0.000561 ***
TNM_PATH_STAGE_GROUP4C NA NA 0.000e+00 NA NA
TNM_PATH_STAGE_GROUPN_A -8.254e+00 2.602e-04 1.082e+03 -0.008 0.993915
TNM_PATH_STAGE_GROUP99 5.196e-01 1.681e+00 2.973e-01 1.748 0.080538 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
TNM_PATH_STAGE_GROUP1 1.042e+00 9.596e-01 0.5016 2.165
TNM_PATH_STAGE_GROUP1A 1.067e+00 9.375e-01 0.5134 2.217
TNM_PATH_STAGE_GROUP1B 1.164e+00 8.595e-01 0.5296 2.556
TNM_PATH_STAGE_GROUP1C NA NA NA NA
TNM_PATH_STAGE_GROUP2 1.053e+00 9.499e-01 0.5264 2.105
TNM_PATH_STAGE_GROUP2A NA NA NA NA
TNM_PATH_STAGE_GROUP2B NA NA NA NA
TNM_PATH_STAGE_GROUP2C NA NA NA NA
TNM_PATH_STAGE_GROUP3 2.540e+00 3.937e-01 1.1741 5.494
TNM_PATH_STAGE_GROUP3A 2.165e+01 4.619e-02 4.8088 97.458
TNM_PATH_STAGE_GROUP3B NA NA NA NA
TNM_PATH_STAGE_GROUP3C 2.961e+01 3.377e-02 9.3239 94.054
TNM_PATH_STAGE_GROUP4 9.710e+00 1.030e-01 2.1544 43.765
TNM_PATH_STAGE_GROUP4A 6.403e+00 1.562e-01 1.8046 22.719
TNM_PATH_STAGE_GROUP4A1 NA NA NA NA
TNM_PATH_STAGE_GROUP4B 3.743e+01 2.672e-02 4.7798 293.077
TNM_PATH_STAGE_GROUP4C NA NA NA NA
TNM_PATH_STAGE_GROUPN_A 2.602e-04 3.843e+03 0.0000 Inf
TNM_PATH_STAGE_GROUP99 1.681e+00 5.948e-01 0.9388 3.011
Concordance= 0.596 (se = 0.016 )
Rsquare= 0.04 (max possible= 0.957 )
Likelihood ratio test= 52.84 on 12 df, p=4.392e-07
Wald test = 83.27 on 12 df, p=9.798e-13
Score (logrank) test = 142.6 on 12 df, p=0
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 8 rows containing missing values (geom_errorbar).Removed 20 rows containing missing values (geom_text).Removed 20 rows containing missing values (geom_text).Removed 20 rows containing missing values (geom_text).Removed 20 rows containing missing values (geom_text).Removed 20 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: TNM_PATH_STAGE_GROUP
This manual palette can handle a maximum of 10 values. You have supplied 13.



Margins
uni_var(test_var = "MARGINS", data_imp = data)
_________________________________________________
## MARGINS
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ MARGINS, data = data)
n events median 0.95LCL 0.95UCL
MARGINS=No Residual 601 124 NA 128.5 NA
MARGINS=Residual, NOS 164 38 131.9 121.8 NA
MARGINS=Microscopic Resid 351 71 155.4 133.4 NA
MARGINS=Macroscopic Resid 17 7 71.5 49.7 NA
MARGINS=Not evaluable 22 3 NA 92.3 NA
MARGINS=No surg 161 75 63.2 53.8 75.6
MARGINS=Unknown 44 11 NA 72.4 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ MARGINS, data = data)
MARGINS=No Residual
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 524 13 0.977 0.00638 0.964 0.989
24 472 14 0.950 0.00945 0.931 0.968
36 398 16 0.915 0.01246 0.891 0.940
48 344 14 0.881 0.01503 0.852 0.910
60 285 21 0.823 0.01858 0.787 0.860
120 62 41 0.619 0.03318 0.557 0.687
MARGINS=Residual, NOS
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 148 4 0.975 0.0124 0.951 0.999
24 125 9 0.912 0.0233 0.868 0.959
36 107 4 0.881 0.0272 0.829 0.936
48 88 4 0.846 0.0313 0.787 0.910
60 70 6 0.784 0.0379 0.713 0.862
120 13 8 0.633 0.0600 0.526 0.762
MARGINS=Microscopic Resid
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 313 11 0.967 0.00972 0.948 0.986
24 279 7 0.945 0.01273 0.920 0.970
36 238 9 0.912 0.01623 0.881 0.945
48 200 8 0.880 0.01931 0.843 0.918
60 174 7 0.848 0.02207 0.806 0.892
120 38 24 0.659 0.04124 0.583 0.745
MARGINS=Macroscopic Resid
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 14 0 1.000 0.0000 1.000 1.000
24 12 2 0.857 0.0935 0.692 1.000
36 9 1 0.771 0.1170 0.573 1.000
48 9 0 0.771 0.1170 0.573 1.000
60 5 2 0.579 0.1471 0.351 0.952
120 2 1 0.463 0.1567 0.238 0.899
MARGINS=Not evaluable
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 17 0 1.000 0.0000 1.000 1
24 16 0 1.000 0.0000 1.000 1
36 13 0 1.000 0.0000 1.000 1
48 10 1 0.923 0.0739 0.789 1
60 8 0 0.923 0.0739 0.789 1
120 2 2 0.659 0.1662 0.402 1
MARGINS=No surg
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 128 19 0.876 0.0267 0.825 0.930
24 92 19 0.735 0.0372 0.666 0.812
36 68 9 0.654 0.0418 0.577 0.742
48 52 5 0.601 0.0447 0.520 0.695
60 32 6 0.516 0.0502 0.427 0.625
120 4 15 0.210 0.0605 0.120 0.369
MARGINS=Unknown
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 40 1 0.976 0.0235 0.931 1.000
24 36 1 0.951 0.0342 0.886 1.000
36 31 1 0.923 0.0431 0.842 1.000
48 21 2 0.863 0.0573 0.758 0.983
60 18 2 0.779 0.0767 0.642 0.945
120 4 4 0.567 0.1076 0.391 0.823
## Univariable Cox Proportional Hazard Model for: MARGINS
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ MARGINS, data = data)
n= 1360, number of events= 329
coef exp(coef) se(coef) z Pr(>|z|)
MARGINSResidual, NOS 0.21302 1.23740 0.18558 1.148 0.2510
MARGINSMicroscopic Resid -0.05557 0.94595 0.14886 -0.373 0.7089
MARGINSMacroscopic Resid 0.88777 2.42971 0.38887 2.283 0.0224 *
MARGINSNot evaluable -0.26976 0.76356 0.58437 -0.462 0.6443
MARGINSNo surg 1.38452 3.99292 0.14815 9.345 <2e-16 ***
MARGINSUnknown 0.26715 1.30624 0.31484 0.849 0.3961
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
MARGINSResidual, NOS 1.2374 0.8081 0.8601 1.780
MARGINSMicroscopic Resid 0.9459 1.0571 0.7066 1.266
MARGINSMacroscopic Resid 2.4297 0.4116 1.1338 5.207
MARGINSNot evaluable 0.7636 1.3097 0.2429 2.400
MARGINSNo surg 3.9929 0.2504 2.9866 5.338
MARGINSUnknown 1.3062 0.7656 0.7047 2.421
Concordance= 0.617 (se = 0.017 )
Rsquare= 0.061 (max possible= 0.956 )
Likelihood ratio test= 85.81 on 6 df, p=2.22e-16
Wald test = 107.9 on 6 df, p=0
Score (logrank) test = 124.8 on 6 df, p=0
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: MARGINS



Margins Yes/No
#uni_var(test_var = "MARGINS_YN", data_imp = data)
30 Day Readmission
uni_var(test_var = "READM_HOSP_30_DAYS_F", data_imp = data)
_________________________________________________
## READM_HOSP_30_DAYS_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ READM_HOSP_30_DAYS_F, data = data)
n events median 0.95LCL 0.95UCL
READM_HOSP_30_DAYS_F=No_Surg_or_No_Readmit 1292 305 141.77 128.2 NA
READM_HOSP_30_DAYS_F=Unplan_Readmit_Same 36 15 110.72 59.9 NA
READM_HOSP_30_DAYS_F=Plan_Readmit_Same 15 5 90.28 66.2 NA
READM_HOSP_30_DAYS_F=PlanUnplan_Same 1 1 1.38 NA NA
READM_HOSP_30_DAYS_F=9 16 3 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ READM_HOSP_30_DAYS_F, data = data)
READM_HOSP_30_DAYS_F=No_Surg_or_No_Readmit
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1126 44 0.964 0.00533 0.954 0.975
24 979 47 0.922 0.00789 0.907 0.937
36 821 37 0.884 0.00969 0.865 0.903
48 684 33 0.846 0.01131 0.824 0.869
60 558 40 0.793 0.01335 0.768 0.820
120 118 88 0.591 0.02269 0.548 0.637
READM_HOSP_30_DAYS_F=Unplan_Readmit_Same
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 30 3 0.915 0.0470 0.827 1.000
24 27 3 0.823 0.0656 0.704 0.963
36 24 1 0.792 0.0703 0.665 0.942
48 21 1 0.756 0.0758 0.621 0.920
60 17 3 0.642 0.0883 0.491 0.841
120 5 4 0.441 0.1073 0.273 0.710
READM_HOSP_30_DAYS_F=Plan_Readmit_Same
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 14 0 1.000 0.0000 1.000 1
24 13 1 0.929 0.0688 0.803 1
36 7 2 0.774 0.1152 0.578 1
48 7 0 0.774 0.1152 0.578 1
60 6 0 0.774 0.1152 0.578 1
READM_HOSP_30_DAYS_F=PlanUnplan_Same
time n.risk n.event survival std.err lower 95% CI upper 95% CI
READM_HOSP_30_DAYS_F=9
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 14 0 1.000 0.0000 1.000 1
24 13 1 0.929 0.0688 0.803 1
36 12 0 0.929 0.0688 0.803 1
48 12 0 0.929 0.0688 0.803 1
60 11 1 0.851 0.0973 0.680 1
120 2 1 0.766 0.1191 0.565 1
## Univariable Cox Proportional Hazard Model for: READM_HOSP_30_DAYS_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ READM_HOSP_30_DAYS_F, data = data)
n= 1360, number of events= 329
coef exp(coef) se(coef) z Pr(>|z|)
READM_HOSP_30_DAYS_FUnplan_Readmit_Same 0.4686 1.5977 0.2646 1.771 0.0766 .
READM_HOSP_30_DAYS_FPlan_Readmit_Same 0.4202 1.5223 0.4511 0.931 0.3516
READM_HOSP_30_DAYS_FPlanUnplan_Same 5.2765 195.6763 1.0691 4.935 8.01e-07 ***
READM_HOSP_30_DAYS_F9 -0.5392 0.5832 0.5804 -0.929 0.3529
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
READM_HOSP_30_DAYS_FUnplan_Readmit_Same 1.5977 0.62589 0.9512 2.684
READM_HOSP_30_DAYS_FPlan_Readmit_Same 1.5223 0.65690 0.6288 3.686
READM_HOSP_30_DAYS_FPlanUnplan_Same 195.6763 0.00511 24.0705 1590.712
READM_HOSP_30_DAYS_F9 0.5832 1.71469 0.1870 1.819
Concordance= 0.518 (se = 0.007 )
Rsquare= 0.009 (max possible= 0.956 )
Likelihood ratio test= 12.97 on 4 df, p=0.01143
Wald test = 29.02 on 4 df, p=7.732e-06
Score (logrank) test = 171.6 on 4 df, p=0
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: READM_HOSP_30_DAYS_F



Radiation Type
uni_var(test_var = "RX_SUMM_RADIATION_F", data_imp = data)
_________________________________________________
## RX_SUMM_RADIATION_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RX_SUMM_RADIATION_F, data = data)
n events median 0.95LCL 0.95UCL
RX_SUMM_RADIATION_F=None 1268 290 149.6 128.5 NA
RX_SUMM_RADIATION_F=Beam Radiation 73 35 61.9 40.6 NA
RX_SUMM_RADIATION_F=Radioactive Implants 1 0 NA NA NA
RX_SUMM_RADIATION_F=Beam + Imp or Isotopes 1 0 NA NA NA
RX_SUMM_RADIATION_F=Unknown 17 4 NA 131.9 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RX_SUMM_RADIATION_F, data = data)
RX_SUMM_RADIATION_F=None
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1104 39 0.968 0.00512 0.958 0.978
24 973 40 0.931 0.00752 0.916 0.946
36 817 37 0.893 0.00947 0.874 0.912
48 685 31 0.857 0.01110 0.835 0.879
60 560 41 0.802 0.01330 0.776 0.828
120 115 88 0.595 0.02306 0.551 0.642
RX_SUMM_RADIATION_F=Beam Radiation
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 64 8 0.890 0.0366 0.822 0.965
24 44 12 0.711 0.0548 0.611 0.827
36 33 3 0.658 0.0587 0.553 0.784
48 25 3 0.595 0.0634 0.483 0.733
60 19 3 0.515 0.0697 0.395 0.671
120 5 5 0.354 0.0798 0.228 0.551
RX_SUMM_RADIATION_F=Radioactive Implants
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
RX_SUMM_RADIATION_F=Beam + Imp or Isotopes
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
24 1 0 1 0 1 1
36 1 0 1 0 1 1
48 1 0 1 0 1 1
60 1 0 1 0 1 1
RX_SUMM_RADIATION_F=Unknown
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 14 1 0.933 0.0644 0.815 1
24 14 0 0.933 0.0644 0.815 1
36 13 0 0.933 0.0644 0.815 1
48 13 0 0.933 0.0644 0.815 1
60 12 0 0.933 0.0644 0.815 1
120 5 2 0.770 0.1179 0.570 1
## Univariable Cox Proportional Hazard Model for: RX_SUMM_RADIATION_F
Loglik converged before variable 2,4 ; beta may be infinite. X matrix deemed to be singular; variable 3 5
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RX_SUMM_RADIATION_F, data = data)
n= 1360, number of events= 329
coef exp(coef) se(coef) z Pr(>|z|)
RX_SUMM_RADIATION_FBeam Radiation 1.037e+00 2.819e+00 1.794e-01 5.779 7.52e-09 ***
RX_SUMM_RADIATION_FRadioactive Implants -1.306e+01 2.122e-06 2.871e+03 -0.005 0.996
RX_SUMM_RADIATION_FRadioisotopes NA NA 0.000e+00 NA NA
RX_SUMM_RADIATION_FBeam + Imp or Isotopes -1.305e+01 2.140e-06 1.133e+03 -0.012 0.991
RX_SUMM_RADIATION_FRadiation, NOS NA NA 0.000e+00 NA NA
RX_SUMM_RADIATION_FUnknown -4.143e-01 6.608e-01 5.046e-01 -0.821 0.412
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
RX_SUMM_RADIATION_FBeam Radiation 2.819e+00 3.547e-01 1.9837 4.007
RX_SUMM_RADIATION_FRadioactive Implants 2.122e-06 4.712e+05 0.0000 Inf
RX_SUMM_RADIATION_FRadioisotopes NA NA NA NA
RX_SUMM_RADIATION_FBeam + Imp or Isotopes 2.140e-06 4.673e+05 0.0000 Inf
RX_SUMM_RADIATION_FRadiation, NOS NA NA NA NA
RX_SUMM_RADIATION_FUnknown 6.608e-01 1.513e+00 0.2458 1.777
Concordance= 0.548 (se = 0.007 )
Rsquare= 0.02 (max possible= 0.956 )
Likelihood ratio test= 27.64 on 4 df, p=1.478e-05
Wald test = 34.45 on 4 df, p=6.024e-07
Score (logrank) test = 38.17 on 4 df, p=1.034e-07
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 3 rows containing missing values (geom_errorbar).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: RX_SUMM_RADIATION_F



Lymphovascular Invasion
uni_var(test_var = "LYMPH_VASCULAR_INVASION_F", data_imp = data)
_________________________________________________
## LYMPH_VASCULAR_INVASION_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ LYMPH_VASCULAR_INVASION_F, data = data)
622 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
LYMPH_VASCULAR_INVASION_F=Neg_LymphVasc_Inv 271 43 NA 80.1 NA
LYMPH_VASCULAR_INVASION_F=Pos_LumphVasc_Inv 28 15 27.8 20.9 NA
LYMPH_VASCULAR_INVASION_F=N_A 1 0 NA NA NA
LYMPH_VASCULAR_INVASION_F=Unknown 438 61 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ LYMPH_VASCULAR_INVASION_F, data = data)
622 observations deleted due to missingness
LYMPH_VASCULAR_INVASION_F=Neg_LymphVasc_Inv
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 234 8 0.968 0.0111 0.947 0.990
24 196 10 0.924 0.0172 0.891 0.959
36 147 7 0.887 0.0215 0.846 0.931
48 100 4 0.859 0.0252 0.811 0.910
60 62 8 0.776 0.0361 0.708 0.850
LYMPH_VASCULAR_INVASION_F=Pos_LumphVasc_Inv
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 22 5 0.816 0.0744 0.682 0.976
24 11 7 0.515 0.1030 0.348 0.762
36 7 1 0.458 0.1062 0.290 0.721
48 3 2 0.294 0.1180 0.134 0.646
60 3 0 0.294 0.1180 0.134 0.646
LYMPH_VASCULAR_INVASION_F=N_A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
LYMPH_VASCULAR_INVASION_F=Unknown
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 372 10 0.975 0.00772 0.960 0.991
24 303 15 0.933 0.01301 0.908 0.959
36 216 14 0.884 0.01775 0.850 0.920
48 165 3 0.871 0.01913 0.834 0.909
60 108 9 0.816 0.02524 0.768 0.867
## Univariable Cox Proportional Hazard Model for: LYMPH_VASCULAR_INVASION_F
Loglik converged before variable 2 ; beta may be infinite.
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ LYMPH_VASCULAR_INVASION_F, data = data)
n= 738, number of events= 119
(622 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
LYMPH_VASCULAR_INVASION_FPos_LumphVasc_Inv 1.684e+00 5.389e+00 3.019e-01 5.579 2.42e-08 ***
LYMPH_VASCULAR_INVASION_FN_A -1.057e+01 2.557e-05 1.655e+03 -0.006 0.995
LYMPH_VASCULAR_INVASION_FUnknown -1.111e-01 8.948e-01 1.992e-01 -0.558 0.577
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
LYMPH_VASCULAR_INVASION_FPos_LumphVasc_Inv 5.389e+00 1.856e-01 2.9819 9.739
LYMPH_VASCULAR_INVASION_FN_A 2.557e-05 3.911e+04 0.0000 Inf
LYMPH_VASCULAR_INVASION_FUnknown 8.948e-01 1.118e+00 0.6056 1.322
Concordance= 0.575 (se = 0.025 )
Rsquare= 0.035 (max possible= 0.851 )
Likelihood ratio test= 26.52 on 3 df, p=7.429e-06
Wald test = 39.82 on 3 df, p=1.166e-08
Score (logrank) test = 51.01 on 3 df, p=4.857e-11
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 4 rows containing missing values (geom_text).Removed 4 rows containing missing values (geom_text).Removed 4 rows containing missing values (geom_text).Removed 4 rows containing missing values (geom_text).Removed 4 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: LYMPH_VASCULAR_INVASION_F



Endoscopic/Robotic
uni_var(test_var = "RX_HOSP_SURG_APPR_2010_F", data_imp = data)
_________________________________________________
## RX_HOSP_SURG_APPR_2010_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RX_HOSP_SURG_APPR_2010_F, data = data)
622 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
RX_HOSP_SURG_APPR_2010_F=No_Surg 122 38 61.9 53.5 NA
RX_HOSP_SURG_APPR_2010_F=Robot_Assist 2 0 NA NA NA
RX_HOSP_SURG_APPR_2010_F=Endo_Lap 18 1 NA NA NA
RX_HOSP_SURG_APPR_2010_F=Endo_Lap_to_Open 2 0 NA NA NA
RX_HOSP_SURG_APPR_2010_F=Open_Unknown 594 80 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RX_HOSP_SURG_APPR_2010_F, data = data)
622 observations deleted due to missingness
RX_HOSP_SURG_APPR_2010_F=No_Surg
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 94 9 0.920 0.0257 0.871 0.972
24 62 14 0.766 0.0434 0.686 0.856
36 39 7 0.667 0.0516 0.574 0.777
48 24 3 0.607 0.0576 0.504 0.731
60 9 2 0.527 0.0728 0.402 0.691
RX_HOSP_SURG_APPR_2010_F=Robot_Assist
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 0 1 0 1 1
24 2 0 1 0 1 1
RX_HOSP_SURG_APPR_2010_F=Endo_Lap
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 15 0 1.0 0.000 1.000 1
24 15 0 1.0 0.000 1.000 1
36 12 0 1.0 0.000 1.000 1
48 7 0 1.0 0.000 1.000 1
60 4 1 0.8 0.179 0.516 1
RX_HOSP_SURG_APPR_2010_F=Endo_Lap_to_Open
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 0 1 0 1 1
24 2 0 1 0 1 1
36 2 0 1 0 1 1
48 2 0 1 0 1 1
60 2 0 1 0 1 1
RX_HOSP_SURG_APPR_2010_F=Open_Unknown
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 515 14 0.975 0.00672 0.961 0.988
24 429 18 0.938 0.01066 0.917 0.959
36 317 15 0.901 0.01388 0.874 0.929
48 235 6 0.881 0.01585 0.850 0.913
60 158 14 0.821 0.02141 0.780 0.864
## Univariable Cox Proportional Hazard Model for: RX_HOSP_SURG_APPR_2010_F
Loglik converged before variable 1,4 ; beta may be infinite. X matrix deemed to be singular; variable 2 6
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RX_HOSP_SURG_APPR_2010_F, data = data)
n= 738, number of events= 119
(622 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
RX_HOSP_SURG_APPR_2010_FRobot_Assist -1.648e+01 6.934e-08 4.595e+03 -0.004 0.9971
RX_HOSP_SURG_APPR_2010_FRobot_to_Open NA NA 0.000e+00 NA NA
RX_HOSP_SURG_APPR_2010_FEndo_Lap -2.262e+00 1.041e-01 1.014e+00 -2.231 0.0257 *
RX_HOSP_SURG_APPR_2010_FEndo_Lap_to_Open -1.647e+01 7.063e-08 2.325e+03 -0.007 0.9943
RX_HOSP_SURG_APPR_2010_FOpen_Unknown -1.316e+00 2.682e-01 2.007e-01 -6.557 5.5e-11 ***
RX_HOSP_SURG_APPR_2010_FUnknown NA NA 0.000e+00 NA NA
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
RX_HOSP_SURG_APPR_2010_FRobot_Assist 6.934e-08 1.442e+07 0.00000 Inf
RX_HOSP_SURG_APPR_2010_FRobot_to_Open NA NA NA NA
RX_HOSP_SURG_APPR_2010_FEndo_Lap 1.041e-01 9.604e+00 0.01427 0.7596
RX_HOSP_SURG_APPR_2010_FEndo_Lap_to_Open 7.063e-08 1.416e+07 0.00000 Inf
RX_HOSP_SURG_APPR_2010_FOpen_Unknown 2.682e-01 3.728e+00 0.18101 0.3975
RX_HOSP_SURG_APPR_2010_FUnknown NA NA NA NA
Concordance= 0.628 (se = 0.019 )
Rsquare= 0.053 (max possible= 0.851 )
Likelihood ratio test= 40.19 on 4 df, p=3.947e-08
Wald test = 44.83 on 4 df, p=4.322e-09
Score (logrank) test = 53.43 on 4 df, p=6.942e-11
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 3 rows containing missing values (geom_errorbar).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: RX_HOSP_SURG_APPR_2010_F



Surgery Radiation Sequence
uni_var(test_var = "SURG_RAD_SEQ", data_imp = data)
_________________________________________________
## SURG_RAD_SEQ
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SURG_RAD_SEQ, data = data)
n events median 0.95LCL 0.95UCL
SURG_RAD_SEQ=Surg Alone 1158 241 155.4 141.8 NA
SURG_RAD_SEQ=Surg then Rad 23 9 125.6 39.2 NA
SURG_RAD_SEQ=Rad Alone 52 26 55.2 40.0 NA
SURG_RAD_SEQ=No Treatment 105 47 68.5 48.6 81.8
SURG_RAD_SEQ=Other 22 6 131.9 82.2 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SURG_RAD_SEQ, data = data)
SURG_RAD_SEQ=Surg Alone
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1018 28 0.974 0.00477 0.965 0.984
24 911 27 0.948 0.00689 0.934 0.961
36 771 31 0.913 0.00902 0.896 0.931
48 649 28 0.878 0.01087 0.857 0.899
60 538 38 0.823 0.01333 0.797 0.850
120 112 77 0.624 0.02388 0.579 0.673
SURG_RAD_SEQ=Surg then Rad
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 23 0 1.000 0.000 1.000 1.000
24 14 6 0.710 0.100 0.538 0.936
36 11 0 0.710 0.100 0.538 0.936
48 10 1 0.645 0.110 0.462 0.901
60 10 0 0.645 0.110 0.462 0.901
120 4 1 0.581 0.116 0.392 0.860
SURG_RAD_SEQ=Rad Alone
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 43 8 0.846 0.0500 0.7536 0.950
24 31 6 0.722 0.0635 0.6077 0.858
36 23 3 0.646 0.0703 0.5221 0.800
48 16 2 0.585 0.0759 0.4533 0.754
60 10 3 0.452 0.0894 0.3072 0.666
120 1 4 0.211 0.1053 0.0795 0.561
SURG_RAD_SEQ=No Treatment
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 82 11 0.889 0.0316 0.829 0.953
24 58 13 0.734 0.0471 0.647 0.833
36 42 6 0.648 0.0532 0.552 0.761
48 34 2 0.613 0.0557 0.513 0.733
60 20 3 0.546 0.0621 0.436 0.682
120 3 10 0.214 0.0755 0.107 0.427
SURG_RAD_SEQ=Other
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 18 1 0.947 0.0512 0.852 1.000
24 18 0 0.947 0.0512 0.852 1.000
36 17 0 0.947 0.0512 0.852 1.000
48 15 1 0.888 0.0748 0.753 1.000
60 14 0 0.888 0.0748 0.753 1.000
120 5 3 0.680 0.1203 0.481 0.962
## Univariable Cox Proportional Hazard Model for: SURG_RAD_SEQ
X matrix deemed to be singular; variable 5 6
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SURG_RAD_SEQ, data = data)
n= 1360, number of events= 329
coef exp(coef) se(coef) z Pr(>|z|)
SURG_RAD_SEQSurg then Rad 0.62470 1.86768 0.33984 1.838 0.066 .
SURG_RAD_SEQRad Alone 1.41191 4.10379 0.20785 6.793 1.1e-11 ***
SURG_RAD_SEQNo Treatment 1.33626 3.80477 0.16093 8.303 < 2e-16 ***
SURG_RAD_SEQOther -0.02054 0.97967 0.41436 -0.050 0.960
SURG_RAD_SEQRad before and after Surg NA NA 0.00000 NA NA
SURG_RAD_SEQRad then Surg NA NA 0.00000 NA NA
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
SURG_RAD_SEQSurg then Rad 1.8677 0.5354 0.9595 3.636
SURG_RAD_SEQRad Alone 4.1038 0.2437 2.7307 6.167
SURG_RAD_SEQNo Treatment 3.8048 0.2628 2.7755 5.216
SURG_RAD_SEQOther 0.9797 1.0207 0.4349 2.207
SURG_RAD_SEQRad before and after Surg NA NA NA NA
SURG_RAD_SEQRad then Surg NA NA NA NA
Concordance= 0.602 (se = 0.01 )
Rsquare= 0.057 (max possible= 0.956 )
Likelihood ratio test= 80.25 on 4 df, p=1.11e-16
Wald test = 102.8 on 4 df, p=0
Score (logrank) test = 118.9 on 4 df, p=0
Removed 3 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: SURG_RAD_SEQ



Surgery Yes/No
model_one <- coxph(Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 0)
~ SURG_RAD_SEQ + INSURANCE_F + AGE + SEX_F + RACE_F + INCOME_F + U_R_F +
FACILITY_TYPE_F + FACILITY_LOCATION_F + EDUCATION_F,
data = data)
Loglik converged before variable 10 ; beta may be infinite. X matrix deemed to be singular; variable 5 6
model_one %>% summary()
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SURG_RAD_SEQ + INSURANCE_F + AGE + SEX_F + RACE_F +
INCOME_F + U_R_F + FACILITY_TYPE_F + FACILITY_LOCATION_F +
EDUCATION_F, data = data)
n= 1306, number of events= 320
(54 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
SURG_RAD_SEQSurg then Rad 7.095e-01 2.033e+00 3.659e-01 1.939 0.05252 .
SURG_RAD_SEQRad Alone 7.361e-01 2.088e+00 2.342e-01 3.143 0.00167 **
SURG_RAD_SEQNo Treatment 8.477e-01 2.334e+00 1.788e-01 4.741 2.13e-06 ***
SURG_RAD_SEQOther -3.561e-01 7.004e-01 4.744e-01 -0.750 0.45297
SURG_RAD_SEQRad before and after Surg NA NA 0.000e+00 NA NA
SURG_RAD_SEQRad then Surg NA NA 0.000e+00 NA NA
INSURANCE_FNone 8.065e-01 2.240e+00 5.304e-01 1.521 0.12833
INSURANCE_FMedicaid -2.998e-01 7.409e-01 6.605e-01 -0.454 0.64986
INSURANCE_FMedicare 1.934e-01 1.213e+00 1.713e-01 1.129 0.25909
INSURANCE_FOther Government -1.292e+01 2.445e-06 9.794e+02 -0.013 0.98947
INSURANCE_FUnknown -1.468e-01 8.635e-01 6.105e-01 -0.240 0.81000
AGE 8.308e-02 1.087e+00 7.292e-03 11.393 < 2e-16 ***
SEX_FFemale -4.088e-01 6.644e-01 1.412e-01 -2.895 0.00380 **
RACE_FBlack 9.557e-01 2.600e+00 3.960e-01 2.413 0.01581 *
RACE_FOther/Unk 3.420e-01 1.408e+00 3.254e-01 1.051 0.29327
RACE_FAsian -5.815e-01 5.591e-01 4.019e-01 -1.447 0.14796
INCOME_F$38,000 - $47,999 -1.102e-01 8.956e-01 2.130e-01 -0.517 0.60485
INCOME_F$48,000 - $62,999 1.069e-02 1.011e+00 2.236e-01 0.048 0.96187
INCOME_F$63,000 + 4.084e-02 1.042e+00 2.508e-01 0.163 0.87065
U_R_FUrban 1.305e-01 1.139e+00 1.802e-01 0.724 0.46895
U_R_FRural -7.241e-01 4.847e-01 4.462e-01 -1.623 0.10459
FACILITY_TYPE_FComprehensive Comm Ca Program 1.846e-01 1.203e+00 3.885e-01 0.475 0.63475
FACILITY_TYPE_FAcademic/Research Program -1.418e-03 9.986e-01 3.872e-01 -0.004 0.99708
FACILITY_TYPE_FIntegrated Network Ca Program 3.764e-01 1.457e+00 4.014e-01 0.938 0.34846
FACILITY_LOCATION_FMiddle Atlantic -3.683e-01 6.919e-01 3.001e-01 -1.227 0.21976
FACILITY_LOCATION_FSouth Atlantic -5.749e-01 5.627e-01 3.100e-01 -1.855 0.06365 .
FACILITY_LOCATION_FEast North Central -2.367e-01 7.892e-01 2.966e-01 -0.798 0.42480
FACILITY_LOCATION_FEast South Central -4.062e-01 6.662e-01 3.659e-01 -1.110 0.26698
FACILITY_LOCATION_FWest North Central 1.014e-02 1.010e+00 3.132e-01 0.032 0.97417
FACILITY_LOCATION_FWest South Central -2.580e-01 7.726e-01 3.393e-01 -0.760 0.44703
FACILITY_LOCATION_FMountain -1.218e-02 9.879e-01 3.366e-01 -0.036 0.97113
FACILITY_LOCATION_FPacific -2.346e-01 7.909e-01 3.207e-01 -0.731 0.46448
EDUCATION_F13 - 20.9% -2.889e-01 7.491e-01 2.182e-01 -1.324 0.18545
EDUCATION_F7 - 12.9% -2.523e-01 7.770e-01 2.239e-01 -1.127 0.25986
EDUCATION_FLess than 7% -5.739e-01 5.633e-01 2.605e-01 -2.203 0.02761 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
SURG_RAD_SEQSurg then Rad 2.033e+00 4.919e-01 0.9923 4.1651
SURG_RAD_SEQRad Alone 2.088e+00 4.790e-01 1.3193 3.3038
SURG_RAD_SEQNo Treatment 2.334e+00 4.284e-01 1.6442 3.3140
SURG_RAD_SEQOther 7.004e-01 1.428e+00 0.2764 1.7750
SURG_RAD_SEQRad before and after Surg NA NA NA NA
SURG_RAD_SEQRad then Surg NA NA NA NA
INSURANCE_FNone 2.240e+00 4.464e-01 0.7922 6.3345
INSURANCE_FMedicaid 7.409e-01 1.350e+00 0.2030 2.7039
INSURANCE_FMedicare 1.213e+00 8.242e-01 0.8672 1.6975
INSURANCE_FOther Government 2.445e-06 4.090e+05 0.0000 Inf
INSURANCE_FUnknown 8.635e-01 1.158e+00 0.2610 2.8571
AGE 1.087e+00 9.203e-01 1.0712 1.1023
SEX_FFemale 6.644e-01 1.505e+00 0.5038 0.8763
RACE_FBlack 2.600e+00 3.846e-01 1.1966 5.6510
RACE_FOther/Unk 1.408e+00 7.104e-01 0.7440 2.6637
RACE_FAsian 5.591e-01 1.789e+00 0.2543 1.2291
INCOME_F$38,000 - $47,999 8.956e-01 1.117e+00 0.5900 1.3597
INCOME_F$48,000 - $62,999 1.011e+00 9.894e-01 0.6520 1.5668
INCOME_F$63,000 + 1.042e+00 9.600e-01 0.6372 1.7030
U_R_FUrban 1.139e+00 8.777e-01 0.8004 1.6219
U_R_FRural 4.847e-01 2.063e+00 0.2022 1.1622
FACILITY_TYPE_FComprehensive Comm Ca Program 1.203e+00 8.315e-01 0.5616 2.5757
FACILITY_TYPE_FAcademic/Research Program 9.986e-01 1.001e+00 0.4676 2.1327
FACILITY_TYPE_FIntegrated Network Ca Program 1.457e+00 6.864e-01 0.6634 3.1999
FACILITY_LOCATION_FMiddle Atlantic 6.919e-01 1.445e+00 0.3842 1.2460
FACILITY_LOCATION_FSouth Atlantic 5.627e-01 1.777e+00 0.3065 1.0332
FACILITY_LOCATION_FEast North Central 7.892e-01 1.267e+00 0.4413 1.4114
FACILITY_LOCATION_FEast South Central 6.662e-01 1.501e+00 0.3252 1.3648
FACILITY_LOCATION_FWest North Central 1.010e+00 9.899e-01 0.5468 1.8664
FACILITY_LOCATION_FWest South Central 7.726e-01 1.294e+00 0.3973 1.5024
FACILITY_LOCATION_FMountain 9.879e-01 1.012e+00 0.5108 1.9107
FACILITY_LOCATION_FPacific 7.909e-01 1.264e+00 0.4218 1.4829
EDUCATION_F13 - 20.9% 7.491e-01 1.335e+00 0.4885 1.1488
EDUCATION_F7 - 12.9% 7.770e-01 1.287e+00 0.5010 1.2051
EDUCATION_FLess than 7% 5.633e-01 1.775e+00 0.3381 0.9387
Concordance= 0.769 (se = 0.018 )
Rsquare= 0.218 (max possible= 0.956 )
Likelihood ratio test= 321.2 on 33 df, p=0
Wald test = 282.4 on 33 df, p=0
Score (logrank) test = 323.3 on 33 df, p=0
Radiation Yes/No
uni_var(test_var = "RADIATION_YN", data_imp = data)
_________________________________________________
## RADIATION_YN
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RADIATION_YN, data = data)
17 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
RADIATION_YN=No 1268 290 149.6 128.5 NA
RADIATION_YN=Yes 75 35 61.9 40.6 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RADIATION_YN, data = data)
17 observations deleted due to missingness
RADIATION_YN=No
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1104 39 0.968 0.00512 0.958 0.978
24 973 40 0.931 0.00752 0.916 0.946
36 817 37 0.893 0.00947 0.874 0.912
48 685 31 0.857 0.01110 0.835 0.879
60 560 41 0.802 0.01330 0.776 0.828
120 115 88 0.595 0.02306 0.551 0.642
RADIATION_YN=Yes
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 66 8 0.893 0.0356 0.826 0.966
24 45 12 0.718 0.0538 0.620 0.832
36 34 3 0.666 0.0578 0.561 0.789
48 26 3 0.604 0.0625 0.493 0.740
60 20 3 0.526 0.0687 0.407 0.680
120 5 5 0.367 0.0803 0.239 0.563
## Univariable Cox Proportional Hazard Model for: RADIATION_YN
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RADIATION_YN, data = data)
n= 1343, number of events= 325
(17 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
RADIATION_YNYes 1.0029 2.7262 0.1793 5.592 2.25e-08 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
RADIATION_YNYes 2.726 0.3668 1.918 3.874
Concordance= 0.544 (se = 0.007 )
Rsquare= 0.018 (max possible= 0.955 )
Likelihood ratio test= 24.23 on 1 df, p=8.545e-07
Wald test = 31.27 on 1 df, p=2.246e-08
Score (logrank) test = 33.97 on 1 df, p=5.587e-09
## Unadjusted Kaplan Meier Overall Survival Curve for: RADIATION_YN



Chemo Yes/No
uni_var(test_var = "CHEMO_YN", data_imp = data)
_________________________________________________
## CHEMO_YN
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ CHEMO_YN, data = data)
n events median 0.95LCL 0.95UCL
CHEMO_YN=No 1287 298 149.6 128.2 NA
CHEMO_YN=Yes 31 20 30.3 21.9 NA
CHEMO_YN=Ukn 42 11 NA 101.5 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ CHEMO_YN, data = data)
CHEMO_YN=No
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1119 44 0.964 0.00534 0.954 0.974
24 981 42 0.926 0.00770 0.911 0.941
36 823 34 0.891 0.00944 0.873 0.910
48 691 30 0.857 0.01100 0.835 0.878
60 566 43 0.800 0.01327 0.774 0.826
120 117 89 0.596 0.02278 0.553 0.642
CHEMO_YN=Yes
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 26 3 0.898 0.0560 0.7942 1.000
24 15 9 0.581 0.0927 0.4247 0.794
36 10 3 0.456 0.0968 0.3011 0.692
48 5 3 0.299 0.0981 0.1576 0.569
60 2 1 0.200 0.1045 0.0716 0.557
CHEMO_YN=Ukn
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 39 1 0.975 0.0247 0.928 1.000
24 36 1 0.950 0.0345 0.885 1.000
36 31 3 0.868 0.0553 0.766 0.983
48 28 1 0.839 0.0605 0.728 0.966
60 24 0 0.839 0.0605 0.728 0.966
120 8 5 0.618 0.0975 0.453 0.842
## Univariable Cox Proportional Hazard Model for: CHEMO_YN
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ CHEMO_YN, data = data)
n= 1360, number of events= 329
coef exp(coef) se(coef) z Pr(>|z|)
CHEMO_YNYes 1.8818 6.5650 0.2352 8.001 1.22e-15 ***
CHEMO_YNUkn -0.1860 0.8302 0.3079 -0.604 0.546
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
CHEMO_YNYes 6.5650 0.1523 4.1403 10.410
CHEMO_YNUkn 0.8302 1.2045 0.4541 1.518
Concordance= 0.535 (se = 0.007 )
Rsquare= 0.029 (max possible= 0.956 )
Likelihood ratio test= 40.5 on 2 df, p=1.605e-09
Wald test = 64.85 on 2 df, p=8.216e-15
Score (logrank) test = 86.36 on 2 df, p=0
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: CHEMO_YN



Treatment Yes/No
uni_var(test_var = "Tx_YN", data_imp = data)
_________________________________________________
## Tx_YN
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ Tx_YN, data = data)
42 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
Tx_YN=FALSE 56 30 63.2 29.5 81.8
Tx_YN=TRUE 1262 288 149.6 130.5 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ Tx_YN, data = data)
42 observations deleted due to missingness
Tx_YN=FALSE
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 43 9 0.834 0.0507 0.7400 0.939
24 31 7 0.687 0.0655 0.5700 0.828
36 20 4 0.587 0.0729 0.4605 0.749
48 17 1 0.556 0.0753 0.4268 0.725
60 12 1 0.517 0.0797 0.3818 0.699
120 2 7 0.194 0.0846 0.0824 0.456
Tx_YN=TRUE
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1102 38 0.968 0.00509 0.958 0.978
24 965 44 0.928 0.00771 0.913 0.943
36 813 33 0.893 0.00945 0.875 0.912
48 679 32 0.856 0.01115 0.834 0.878
60 556 43 0.798 0.01345 0.772 0.825
120 115 83 0.602 0.02298 0.558 0.648
## Univariable Cox Proportional Hazard Model for: Tx_YN
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ Tx_YN, data = data)
n= 1318, number of events= 318
(42 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
Tx_YNTRUE -1.3343 0.2633 0.1926 -6.927 4.29e-12 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
Tx_YNTRUE 0.2633 3.798 0.1805 0.3841
Concordance= 0.542 (se = 0.006 )
Rsquare= 0.026 (max possible= 0.954 )
Likelihood ratio test= 34.11 on 1 df, p=5.202e-09
Wald test = 47.99 on 1 df, p=4.292e-12
Score (logrank) test = 55.52 on 1 df, p=9.248e-14
## Unadjusted Kaplan Meier Overall Survival Curve for: Tx_YN



Tumor specific Variables
Node Size
Cox Proportional Hazard Ratio
Model #1
Full analysis
model_one <- coxph(Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 0)
~ FACILITY_TYPE_F + FACILITY_LOCATION_F + CROWFLY +
DX_STAGING_PROC_DAYS +
CHEMO_YN + RADIATION_YN + SURGERY_YN + IMMUNO_YN +
AGE_F + SEX_F + RACE_F + HISPANIC + INSURANCE_F + INCOME_F +
EDUCATION_F + YEAR_OF_DIAGNOSIS,
data = data)
Loglik converged before variable 33 ; beta may be infinite. X matrix deemed to be singular; variable 52
model_one %>% summary()
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_TYPE_F + FACILITY_LOCATION_F + CROWFLY + DX_STAGING_PROC_DAYS +
CHEMO_YN + RADIATION_YN + SURGERY_YN + IMMUNO_YN + AGE_F +
SEX_F + RACE_F + HISPANIC + INSURANCE_F + INCOME_F + EDUCATION_F +
YEAR_OF_DIAGNOSIS, data = data)
n= 918, number of events= 239
(442 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
FACILITY_TYPE_FComprehensive Comm Ca Program 1.166e+00 3.208e+00 6.244e-01 1.867 0.061939 .
FACILITY_TYPE_FAcademic/Research Program 1.042e+00 2.836e+00 6.263e-01 1.665 0.096003 .
FACILITY_TYPE_FIntegrated Network Ca Program 1.493e+00 4.450e+00 6.399e-01 2.333 0.019642 *
FACILITY_LOCATION_FMiddle Atlantic -1.138e-01 8.924e-01 3.623e-01 -0.314 0.753423
FACILITY_LOCATION_FSouth Atlantic -4.717e-01 6.239e-01 3.756e-01 -1.256 0.209177
FACILITY_LOCATION_FEast North Central -1.522e-01 8.588e-01 3.620e-01 -0.420 0.674164
FACILITY_LOCATION_FEast South Central -4.270e-02 9.582e-01 4.199e-01 -0.102 0.919002
FACILITY_LOCATION_FWest North Central 3.202e-01 1.377e+00 3.839e-01 0.834 0.404204
FACILITY_LOCATION_FWest South Central 1.233e-01 1.131e+00 4.235e-01 0.291 0.770985
FACILITY_LOCATION_FMountain 4.214e-01 1.524e+00 4.091e-01 1.030 0.302999
FACILITY_LOCATION_FPacific 7.751e-02 1.081e+00 3.852e-01 0.201 0.840540
CROWFLY -2.308e-03 9.977e-01 1.589e-03 -1.452 0.146440
DX_STAGING_PROC_DAYS 2.420e-03 1.002e+00 3.698e-03 0.654 0.512799
CHEMO_YNYes 1.566e+00 4.786e+00 3.107e-01 5.038 4.70e-07 ***
CHEMO_YNUkn 2.778e-01 1.320e+00 4.406e-01 0.630 0.528372
RADIATION_YNYes 2.805e-01 1.324e+00 2.721e-01 1.031 0.302612
SURGERY_YNUkn 6.195e-01 1.858e+00 7.580e-01 0.817 0.413741
SURGERY_YNYes -7.463e-01 4.741e-01 2.211e-01 -3.375 0.000737 ***
IMMUNO_YNYes -2.505e-01 7.784e-01 3.094e-01 -0.809 0.418233
IMMUNO_YNUkn -3.512e-01 7.038e-01 1.424e+00 -0.247 0.805138
AGE_F(54,64] 1.721e-01 1.188e+00 4.644e-01 0.371 0.710916
AGE_F(64,74] 8.329e-01 2.300e+00 4.398e-01 1.894 0.058247 .
AGE_F(74,100] 2.003e+00 7.410e+00 4.285e-01 4.674 2.95e-06 ***
SEX_FFemale -1.778e-01 8.371e-01 1.778e-01 -1.000 0.317406
RACE_FBlack 9.986e-01 2.714e+00 4.658e-01 2.144 0.032044 *
RACE_FOther/Unk 5.287e-01 1.697e+00 4.259e-01 1.241 0.214492
RACE_FAsian -5.494e-01 5.773e-01 4.646e-01 -1.182 0.237017
HISPANICYes -6.543e-01 5.198e-01 4.205e-01 -1.556 0.119723
HISPANICUnknown -2.546e-01 7.752e-01 2.971e-01 -0.857 0.391523
INSURANCE_FNone 1.821e-01 1.200e+00 8.644e-01 0.211 0.833158
INSURANCE_FMedicaid 3.859e-02 1.039e+00 8.025e-01 0.048 0.961644
INSURANCE_FMedicare 2.388e-01 1.270e+00 2.223e-01 1.074 0.282675
INSURANCE_FOther Government -1.368e+01 1.147e-06 1.604e+03 -0.009 0.993194
INSURANCE_FUnknown 6.386e-01 1.894e+00 6.522e-01 0.979 0.327515
INCOME_F$38,000 - $47,999 1.861e-01 1.205e+00 2.574e-01 0.723 0.469712
INCOME_F$48,000 - $62,999 2.305e-01 1.259e+00 2.717e-01 0.848 0.396242
INCOME_F$63,000 + 3.424e-01 1.408e+00 2.887e-01 1.186 0.235513
EDUCATION_F13 - 20.9% -5.668e-01 5.673e-01 2.603e-01 -2.178 0.029428 *
EDUCATION_F7 - 12.9% -3.691e-01 6.914e-01 2.595e-01 -1.422 0.154952
EDUCATION_FLess than 7% -9.269e-01 3.958e-01 3.003e-01 -3.086 0.002027 **
YEAR_OF_DIAGNOSIS2005 1.155e-01 1.122e+00 3.306e-01 0.349 0.726783
YEAR_OF_DIAGNOSIS2006 1.441e-01 1.155e+00 3.455e-01 0.417 0.676745
YEAR_OF_DIAGNOSIS2007 4.388e-01 1.551e+00 3.335e-01 1.316 0.188191
YEAR_OF_DIAGNOSIS2008 -9.515e-02 9.092e-01 3.470e-01 -0.274 0.783948
YEAR_OF_DIAGNOSIS2009 1.700e-01 1.185e+00 3.594e-01 0.473 0.636134
YEAR_OF_DIAGNOSIS2010 3.912e-01 1.479e+00 3.702e-01 1.057 0.290624
YEAR_OF_DIAGNOSIS2011 3.524e-01 1.422e+00 3.633e-01 0.970 0.332070
YEAR_OF_DIAGNOSIS2012 1.750e-01 1.191e+00 4.214e-01 0.415 0.677954
YEAR_OF_DIAGNOSIS2013 6.302e-01 1.878e+00 3.721e-01 1.693 0.090361 .
YEAR_OF_DIAGNOSIS2014 1.875e-01 1.206e+00 4.412e-01 0.425 0.670791
YEAR_OF_DIAGNOSIS2015 4.412e-01 1.555e+00 4.302e-01 1.026 0.304993
YEAR_OF_DIAGNOSIS2016 NA NA 0.000e+00 NA NA
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
FACILITY_TYPE_FComprehensive Comm Ca Program 3.208e+00 3.117e-01 0.94345 10.9077
FACILITY_TYPE_FAcademic/Research Program 2.836e+00 3.526e-01 0.83110 9.6781
FACILITY_TYPE_FIntegrated Network Ca Program 4.450e+00 2.247e-01 1.26971 15.5986
FACILITY_LOCATION_FMiddle Atlantic 8.924e-01 1.121e+00 0.43868 1.8155
FACILITY_LOCATION_FSouth Atlantic 6.239e-01 1.603e+00 0.29880 1.3028
FACILITY_LOCATION_FEast North Central 8.588e-01 1.164e+00 0.42245 1.7459
FACILITY_LOCATION_FEast South Central 9.582e-01 1.044e+00 0.42072 2.1823
FACILITY_LOCATION_FWest North Central 1.377e+00 7.260e-01 0.64906 2.9234
FACILITY_LOCATION_FWest South Central 1.131e+00 8.840e-01 0.49320 2.5945
FACILITY_LOCATION_FMountain 1.524e+00 6.561e-01 0.68353 3.3985
FACILITY_LOCATION_FPacific 1.081e+00 9.254e-01 0.50786 2.2992
CROWFLY 9.977e-01 1.002e+00 0.99459 1.0008
DX_STAGING_PROC_DAYS 1.002e+00 9.976e-01 0.99518 1.0097
CHEMO_YNYes 4.786e+00 2.090e-01 2.60278 8.7992
CHEMO_YNUkn 1.320e+00 7.574e-01 0.55667 3.1312
RADIATION_YNYes 1.324e+00 7.554e-01 0.77660 2.2566
SURGERY_YNUkn 1.858e+00 5.382e-01 0.42057 8.2090
SURGERY_YNYes 4.741e-01 2.109e+00 0.30737 0.7313
IMMUNO_YNYes 7.784e-01 1.285e+00 0.42448 1.4276
IMMUNO_YNUkn 7.038e-01 1.421e+00 0.04321 11.4637
AGE_F(54,64] 1.188e+00 8.419e-01 0.47801 2.9517
AGE_F(64,74] 2.300e+00 4.348e-01 0.97133 5.4458
AGE_F(74,100] 7.410e+00 1.349e-01 3.19982 17.1615
SEX_FFemale 8.371e-01 1.195e+00 0.59084 1.1861
RACE_FBlack 2.714e+00 3.684e-01 1.08943 6.7633
RACE_FOther/Unk 1.697e+00 5.894e-01 0.73633 3.9096
RACE_FAsian 5.773e-01 1.732e+00 0.23226 1.4351
HISPANICYes 5.198e-01 1.924e+00 0.22797 1.1852
HISPANICUnknown 7.752e-01 1.290e+00 0.43302 1.3879
INSURANCE_FNone 1.200e+00 8.335e-01 0.22043 6.5297
INSURANCE_FMedicaid 1.039e+00 9.621e-01 0.21562 5.0100
INSURANCE_FMedicare 1.270e+00 7.876e-01 0.82131 1.9630
INSURANCE_FOther Government 1.147e-06 8.717e+05 0.00000 Inf
INSURANCE_FUnknown 1.894e+00 5.280e-01 0.52746 6.7994
INCOME_F$38,000 - $47,999 1.205e+00 8.302e-01 0.72731 1.9949
INCOME_F$48,000 - $62,999 1.259e+00 7.941e-01 0.73931 2.1448
INCOME_F$63,000 + 1.408e+00 7.100e-01 0.79985 2.4799
EDUCATION_F13 - 20.9% 5.673e-01 1.763e+00 0.34064 0.9449
EDUCATION_F7 - 12.9% 6.914e-01 1.446e+00 0.41573 1.1497
EDUCATION_FLess than 7% 3.958e-01 2.527e+00 0.21969 0.7130
YEAR_OF_DIAGNOSIS2005 1.122e+00 8.909e-01 0.58720 2.1455
YEAR_OF_DIAGNOSIS2006 1.155e+00 8.658e-01 0.58672 2.2735
YEAR_OF_DIAGNOSIS2007 1.551e+00 6.448e-01 0.80674 2.9814
YEAR_OF_DIAGNOSIS2008 9.092e-01 1.100e+00 0.46056 1.7950
YEAR_OF_DIAGNOSIS2009 1.185e+00 8.436e-01 0.58603 2.3976
YEAR_OF_DIAGNOSIS2010 1.479e+00 6.763e-01 0.71580 3.0549
YEAR_OF_DIAGNOSIS2011 1.422e+00 7.030e-01 0.69791 2.8992
YEAR_OF_DIAGNOSIS2012 1.191e+00 8.395e-01 0.52154 2.7209
YEAR_OF_DIAGNOSIS2013 1.878e+00 5.325e-01 0.90560 3.8945
YEAR_OF_DIAGNOSIS2014 1.206e+00 8.290e-01 0.50803 2.8642
YEAR_OF_DIAGNOSIS2015 1.555e+00 6.432e-01 0.66909 3.6122
YEAR_OF_DIAGNOSIS2016 NA NA NA NA
Concordance= 0.77 (se = 0.021 )
Rsquare= 0.247 (max possible= 0.956 )
Likelihood ratio test= 260.3 on 51 df, p=0
Wald test = 238.1 on 51 df, p=0
Score (logrank) test = 316.2 on 51 df, p=0
Summary of Model
model_one %>%
tidy(., exponentiate = TRUE) %>%
select(term, estimate, conf.low, conf.high, p.value) %>%
rename(Variable = term,
Hazard_Ratio = estimate) %>%
tbl_df %>%
print(n = nrow(.))
Linear Regression
#only include rows with known treatment information, n = 82
data2 <- data %>% filter(SURGERY_YN != "Ukn" & RADIATION_YN != "Ukn"
& CHEMO_YN != "Ukn" & IMMUNO_YN != "Ukn")
# include only variables with data available for at least 75% cases
# from the following set of variables of interest:
## FACILITY_TYPE_F + FACILITY_GEOGRAPHY + CROWFLY +
## DX_STAGING_PROC_DAYS +
## CHEMO_YN + RADIATION_YN + SURGERY_YN + IMMUNO_YN +
## AGE + SEX_F + RACE_F + HISPANIC + INSURANCE_F + INCOME_F +
## EDUCATION_F + YEAR_OF_DIAGNOSIS + SITE_TEXT + GRADE_F
length(which(is.na(data2$GRADE_F))) / nrow(data2)
[1] 0
# excluded the following in this analysis due to missing data:
# DX_STAGING_PROC_DAYS, GRADE_F (mostly unknowns)
fit_surv <- lm(DX_LASTCONTACT_DEATH_MONTHS ~
FACILITY_TYPE_F + FACILITY_LOCATION_F + CROWFLY +
CHEMO_YN + RADIATION_YN + SURGERY_YN +
AGE_F + RACE_F +
EDUCATION_F + YEAR_OF_DIAGNOSIS + SITE_TEXT,
data = data2)
summary(fit_surv) # R^2 = 0.3936, p < 2.2e-16
Call:
lm(formula = DX_LASTCONTACT_DEATH_MONTHS ~ FACILITY_TYPE_F +
FACILITY_LOCATION_F + CROWFLY + CHEMO_YN + RADIATION_YN +
SURGERY_YN + AGE_F + RACE_F + EDUCATION_F + YEAR_OF_DIAGNOSIS +
SITE_TEXT, data = data2)
Residuals:
Min 1Q Median 3Q Max
-102.829 -15.488 4.232 19.088 77.755
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 131.854584 23.865368 5.525 4.02e-08 ***
FACILITY_TYPE_FComprehensive Comm Ca Program -7.103358 5.977332 -1.188 0.234911
FACILITY_TYPE_FAcademic/Research Program -4.195471 5.933651 -0.707 0.479660
FACILITY_TYPE_FIntegrated Network Ca Program -10.256613 6.253279 -1.640 0.101219
FACILITY_LOCATION_FMiddle Atlantic -2.552452 4.740787 -0.538 0.590396
FACILITY_LOCATION_FSouth Atlantic -0.443608 4.734474 -0.094 0.925365
FACILITY_LOCATION_FEast North Central -1.026765 4.760021 -0.216 0.829253
FACILITY_LOCATION_FEast South Central -2.959597 5.582712 -0.530 0.596113
FACILITY_LOCATION_FWest North Central -8.461496 5.048246 -1.676 0.093967 .
FACILITY_LOCATION_FWest South Central -6.430030 5.428310 -1.185 0.236429
FACILITY_LOCATION_FMountain -2.164771 5.657767 -0.383 0.702068
FACILITY_LOCATION_FPacific -2.002885 4.990274 -0.401 0.688226
CROWFLY -0.011262 0.007009 -1.607 0.108328
CHEMO_YNYes -20.914084 6.075051 -3.443 0.000595 ***
RADIATION_YNYes 3.326517 4.303344 0.773 0.439666
SURGERY_YNYes 9.653116 3.113572 3.100 0.001977 **
AGE_F(54,64] -0.614832 3.486502 -0.176 0.860051
AGE_F(64,74] -4.284352 3.279879 -1.306 0.191710
AGE_F(74,100] -13.075191 3.208060 -4.076 4.88e-05 ***
RACE_FBlack -4.962239 6.526717 -0.760 0.447223
RACE_FOther/Unk -2.842179 5.637883 -0.504 0.614266
RACE_FAsian -6.496482 4.225199 -1.538 0.124413
EDUCATION_F13 - 20.9% -1.011504 3.149863 -0.321 0.748169
EDUCATION_F7 - 12.9% -3.441575 3.029905 -1.136 0.256232
EDUCATION_FLess than 7% -0.012430 3.117930 -0.004 0.996820
YEAR_OF_DIAGNOSIS2005 -8.308035 4.984327 -1.667 0.095802 .
YEAR_OF_DIAGNOSIS2006 -19.318756 4.867251 -3.969 7.63e-05 ***
YEAR_OF_DIAGNOSIS2007 -16.897732 4.757487 -3.552 0.000397 ***
YEAR_OF_DIAGNOSIS2008 -23.336003 4.621805 -5.049 5.11e-07 ***
YEAR_OF_DIAGNOSIS2009 -27.089881 4.714740 -5.746 1.15e-08 ***
YEAR_OF_DIAGNOSIS2010 -34.902222 4.728322 -7.382 2.87e-13 ***
YEAR_OF_DIAGNOSIS2011 -42.418639 4.610705 -9.200 < 2e-16 ***
YEAR_OF_DIAGNOSIS2012 -50.982697 4.822674 -10.571 < 2e-16 ***
YEAR_OF_DIAGNOSIS2013 -58.505775 4.652914 -12.574 < 2e-16 ***
YEAR_OF_DIAGNOSIS2014 -69.662016 4.659361 -14.951 < 2e-16 ***
YEAR_OF_DIAGNOSIS2015 -76.503760 4.456774 -17.166 < 2e-16 ***
SITE_TEXTC44.3 Skin of ear and unspecified parts of face -60.655519 31.512899 -1.925 0.054486 .
SITE_TEXTC44.4 Skin of scalp and neck -37.220527 28.815055 -1.292 0.196701
SITE_TEXTC44.5 Skin of trunk -30.878575 22.269634 -1.387 0.165821
SITE_TEXTC44.6 Skin of upper limb and shoulder -30.048077 25.222001 -1.191 0.233748
SITE_TEXTC44.7 Skin of lower limb and hip -19.830117 24.316356 -0.816 0.414940
SITE_TEXTC44.8 Overlapping lesion of skin -30.786391 24.301859 -1.267 0.205454
SITE_TEXTC44.9 Skin, NOS -49.708925 23.611822 -2.105 0.035471 *
SITE_TEXTC51.0 Labium majus -21.184294 22.441771 -0.944 0.345371
SITE_TEXTC51.1 Labium minus -26.281435 23.689139 -1.109 0.267461
SITE_TEXTC51.2 Clitoris -4.558127 31.287977 -0.146 0.884195
SITE_TEXTC51.8 Overlapping lesion of vulva -24.592069 22.560158 -1.090 0.275897
SITE_TEXTC51.9 Vulva, NOS -24.688061 22.220465 -1.111 0.266763
SITE_TEXTC52.9 Vagina, NOS -13.093042 38.452320 -0.341 0.733537
SITE_TEXTC60.2 Body of penis -6.695398 38.510895 -0.174 0.862006
SITE_TEXTC60.8 Overlapping lesion of penis 4.032756 31.486719 0.128 0.898108
SITE_TEXTC60.9 Penis -21.615462 23.179423 -0.933 0.351246
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 31.01 on 1234 degrees of freedom
(19 observations deleted due to missingness)
Multiple R-squared: 0.4172, Adjusted R-squared: 0.3931
F-statistic: 17.32 on 51 and 1234 DF, p-value: < 2.2e-16
# the following variables were excluded to
# improve the R-squared of the regression (initially R^2 = 0.3931):
# INCOME_F + INSURANCE_F + HISPANIC + SEX_F + IMMUNO_YN +
Prediction Logistic Regression Models
Surgery
no_Ukns <- data2 %>%
droplevels() %>%
mutate(SURGERY_YN = as.logical(SURGERY_YN))
# excluded the following in this analysis due to missing data:
# DX_STAGING_PROC_DAYS, GRADE_F (mostly unknowns)
fit_surg <- glm(SURG_TF ~
FACILITY_TYPE_F + FACILITY_LOCATION_F +
CHEMO_YN + RADIATION_YN + IMMUNO_YN +
AGE_F + SEX_F + RACE_F + HISPANIC + INSURANCE_F + INCOME_F +
EDUCATION_F + YEAR_OF_DIAGNOSIS + SITE_TEXT,
data = no_Ukns)
summary(fit_surg)
Call:
glm(formula = SURG_TF ~ FACILITY_TYPE_F + FACILITY_LOCATION_F +
CHEMO_YN + RADIATION_YN + IMMUNO_YN + AGE_F + SEX_F + RACE_F +
HISPANIC + INSURANCE_F + INCOME_F + EDUCATION_F + YEAR_OF_DIAGNOSIS +
SITE_TEXT, data = no_Ukns)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.08847 -0.01519 0.03628 0.08972 0.85785
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.7992782 0.1994927 4.007 6.53e-05 ***
FACILITY_TYPE_FComprehensive Comm Ca Program 0.1691498 0.0506722 3.338 0.000869 ***
FACILITY_TYPE_FAcademic/Research Program 0.2009385 0.0502228 4.001 6.69e-05 ***
FACILITY_TYPE_FIntegrated Network Ca Program 0.1956925 0.0529954 3.693 0.000232 ***
FACILITY_LOCATION_FMiddle Atlantic 0.0591566 0.0398579 1.484 0.138016
FACILITY_LOCATION_FSouth Atlantic 0.0702214 0.0399139 1.759 0.078773 .
FACILITY_LOCATION_FEast North Central 0.0592271 0.0403392 1.468 0.142299
FACILITY_LOCATION_FEast South Central 0.0256378 0.0474329 0.541 0.588946
FACILITY_LOCATION_FWest North Central 0.0487593 0.0430655 1.132 0.257767
FACILITY_LOCATION_FWest South Central 0.0659128 0.0460796 1.430 0.152854
FACILITY_LOCATION_FMountain 0.0190648 0.0478983 0.398 0.690680
FACILITY_LOCATION_FPacific 0.0372704 0.0421142 0.885 0.376339
CHEMO_YNYes -0.2620715 0.0506199 -5.177 2.63e-07 ***
RADIATION_YNYes -0.5279098 0.0336209 -15.702 < 2e-16 ***
IMMUNO_YNYes -0.5074473 0.0335637 -15.119 < 2e-16 ***
AGE_F(54,64] 0.0098455 0.0295117 0.334 0.738729
AGE_F(64,74] -0.0178567 0.0314900 -0.567 0.570779
AGE_F(74,100] -0.0836784 0.0312884 -2.674 0.007586 **
SEX_FFemale 0.0080008 0.0319854 0.250 0.802521
RACE_FBlack -0.0860855 0.0550881 -1.563 0.118384
RACE_FOther/Unk -0.0399660 0.0497251 -0.804 0.421704
RACE_FAsian 0.0261528 0.0362208 0.722 0.470409
HISPANICYes 0.0093300 0.0427723 0.218 0.827363
HISPANICUnknown 0.0316369 0.0351836 0.899 0.368725
INSURANCE_FNone 0.0425970 0.0583273 0.730 0.465340
INSURANCE_FMedicaid -0.1619355 0.0603065 -2.685 0.007346 **
INSURANCE_FMedicare 0.0094878 0.0216824 0.438 0.661768
INSURANCE_FOther Government 0.0951770 0.1010802 0.942 0.346584
INSURANCE_FUnknown -0.1587164 0.0727948 -2.180 0.029423 *
INCOME_F$38,000 - $47,999 0.0299341 0.0288804 1.036 0.300180
INCOME_F$48,000 - $62,999 0.0060796 0.0297987 0.204 0.838369
INCOME_F$63,000 + -0.0145544 0.0328391 -0.443 0.657697
EDUCATION_F13 - 20.9% 0.0210215 0.0281922 0.746 0.456023
EDUCATION_F7 - 12.9% 0.0072040 0.0291652 0.247 0.804944
EDUCATION_FLess than 7% 0.0413905 0.0329067 1.258 0.208700
YEAR_OF_DIAGNOSIS2005 -0.0280056 0.0419033 -0.668 0.504044
YEAR_OF_DIAGNOSIS2006 0.0209031 0.0411039 0.509 0.611165
YEAR_OF_DIAGNOSIS2007 -0.0396419 0.0400932 -0.989 0.322985
YEAR_OF_DIAGNOSIS2008 0.0337970 0.0389393 0.868 0.385597
YEAR_OF_DIAGNOSIS2009 -0.0167611 0.0397162 -0.422 0.673084
YEAR_OF_DIAGNOSIS2010 0.0131670 0.0400078 0.329 0.742129
YEAR_OF_DIAGNOSIS2011 -0.0198470 0.0390272 -0.509 0.611165
YEAR_OF_DIAGNOSIS2012 -0.0103101 0.0407652 -0.253 0.800378
YEAR_OF_DIAGNOSIS2013 -0.0349070 0.0393181 -0.888 0.374817
YEAR_OF_DIAGNOSIS2014 -0.0420014 0.0393561 -1.067 0.286085
YEAR_OF_DIAGNOSIS2015 -0.0239495 0.0377160 -0.635 0.525550
SITE_TEXTC44.3 Skin of ear and unspecified parts of face 0.0491696 0.2649569 0.186 0.852808
SITE_TEXTC44.4 Skin of scalp and neck -0.0003941 0.2418815 -0.002 0.998700
SITE_TEXTC44.5 Skin of trunk -0.1006232 0.1872581 -0.537 0.591123
SITE_TEXTC44.6 Skin of upper limb and shoulder -0.1727345 0.2115522 -0.817 0.414367
SITE_TEXTC44.7 Skin of lower limb and hip -0.0938265 0.2040459 -0.460 0.645720
SITE_TEXTC44.8 Overlapping lesion of skin -0.1478607 0.2039516 -0.725 0.468603
SITE_TEXTC44.9 Skin, NOS -0.1832964 0.1983797 -0.924 0.355685
SITE_TEXTC51.0 Labium majus -0.0689024 0.1912244 -0.360 0.718668
SITE_TEXTC51.1 Labium minus -0.1397233 0.2014844 -0.693 0.488146
SITE_TEXTC51.2 Clitoris 0.0597863 0.2641318 0.226 0.820967
SITE_TEXTC51.8 Overlapping lesion of vulva -0.0600840 0.1921915 -0.313 0.754618
SITE_TEXTC51.9 Vulva, NOS -0.0639352 0.1893800 -0.338 0.735721
SITE_TEXTC52.9 Vagina, NOS 0.0484063 0.3242189 0.149 0.881341
SITE_TEXTC60.2 Body of penis -0.0400083 0.3232956 -0.124 0.901532
SITE_TEXTC60.8 Overlapping lesion of penis 0.1053808 0.2641287 0.399 0.689981
SITE_TEXTC60.9 Penis 0.0027874 0.1945377 0.014 0.988571
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for gaussian family taken to be 0.06750295)
Null deviance: 134.797 on 1285 degrees of freedom
Residual deviance: 82.624 on 1224 degrees of freedom
(19 observations deleted due to missingness)
AIC: 245.44
Number of Fisher Scoring iterations: 2
# the following variables were excluded to
# improve the R-squared of the regression (initially residual = 82.534):
# none
exp(cbind("Odds ratio" = coef(fit_surg), confint.default(fit_surg, level = 0.95)))
Odds ratio 2.5 % 97.5 %
(Intercept) 2.2239350 1.5042279 3.2879905
FACILITY_TYPE_FComprehensive Comm Ca Program 1.1842975 1.0723302 1.3079558
FACILITY_TYPE_FAcademic/Research Program 1.2225496 1.1079414 1.3490131
FACILITY_TYPE_FIntegrated Network Ca Program 1.2161529 1.0961712 1.3492672
FACILITY_LOCATION_FMiddle Atlantic 1.0609414 0.9812152 1.1471455
FACILITY_LOCATION_FSouth Atlantic 1.0727456 0.9920235 1.1600362
FACILITY_LOCATION_FEast North Central 1.0610162 0.9803593 1.1483090
FACILITY_LOCATION_FEast South Central 1.0259692 0.9348876 1.1259245
FACILITY_LOCATION_FWest North Central 1.0499676 0.9649804 1.1424398
FACILITY_LOCATION_FWest South Central 1.0681336 0.9758937 1.1690919
FACILITY_LOCATION_FMountain 1.0192477 0.9279159 1.1195690
FACILITY_LOCATION_FPacific 1.0379736 0.9557376 1.1272856
CHEMO_YNYes 0.7694560 0.6967805 0.8497116
RADIATION_YNYes 0.5898365 0.5522218 0.6300134
IMMUNO_YNYes 0.6020304 0.5637012 0.6429658
AGE_F(54,64] 1.0098941 0.9531373 1.0700306
AGE_F(64,74] 0.9823018 0.9235078 1.0448389
AGE_F(74,100] 0.9197270 0.8650201 0.9778938
SEX_FFemale 1.0080329 0.9467792 1.0732495
RACE_FBlack 0.9175158 0.8236117 1.0221263
RACE_FOther/Unk 0.9608221 0.8715993 1.0591783
RACE_FAsian 1.0264978 0.9561517 1.1020194
HISPANICYes 1.0093736 0.9282054 1.0976397
HISPANICUnknown 1.0321427 0.9633663 1.1058292
INSURANCE_FNone 1.0435173 0.9307893 1.1698978
INSURANCE_FMedicaid 0.8504960 0.7556824 0.9572058
INSURANCE_FMedicare 1.0095329 0.9675298 1.0533595
INSURANCE_FOther Government 1.0998535 0.9021842 1.3408325
INSURANCE_FUnknown 0.8532383 0.7397881 0.9840867
INCOME_F$38,000 - $47,999 1.0303866 0.9736822 1.0903934
INCOME_F$48,000 - $62,999 1.0060982 0.9490207 1.0666085
INCOME_F$63,000 + 0.9855510 0.9241157 1.0510705
EDUCATION_F13 - 20.9% 1.0212440 0.9663451 1.0792617
EDUCATION_F7 - 12.9% 1.0072300 0.9512687 1.0664834
EDUCATION_FLess than 7% 1.0422590 0.9771593 1.1116957
YEAR_OF_DIAGNOSIS2005 0.9723829 0.8957136 1.0556149
YEAR_OF_DIAGNOSIS2006 1.0211231 0.9420856 1.1067916
YEAR_OF_DIAGNOSIS2007 0.9611336 0.8884978 1.0397075
YEAR_OF_DIAGNOSIS2008 1.0343746 0.9583688 1.1164082
YEAR_OF_DIAGNOSIS2009 0.9833786 0.9097336 1.0629854
YEAR_OF_DIAGNOSIS2010 1.0132540 0.9368362 1.0959053
YEAR_OF_DIAGNOSIS2011 0.9803487 0.9081562 1.0582800
YEAR_OF_DIAGNOSIS2012 0.9897429 0.9137407 1.0720667
YEAR_OF_DIAGNOSIS2013 0.9656952 0.8940720 1.0430561
YEAR_OF_DIAGNOSIS2014 0.9588684 0.8876853 1.0357597
YEAR_OF_DIAGNOSIS2015 0.9763351 0.9067655 1.0512422
SITE_TEXTC44.3 Skin of ear and unspecified parts of face 1.0503985 0.6249170 1.7655736
SITE_TEXTC44.4 Skin of scalp and neck 0.9996060 0.6222129 1.6059008
SITE_TEXTC44.5 Skin of trunk 0.9042737 0.6264776 1.3052517
SITE_TEXTC44.6 Skin of upper limb and shoulder 0.8413610 0.5557876 1.2736671
SITE_TEXTC44.7 Skin of lower limb and hip 0.9104407 0.6103339 1.3581129
SITE_TEXTC44.8 Overlapping lesion of skin 0.8625513 0.5783371 1.2864380
SITE_TEXTC44.9 Skin, NOS 0.8325214 0.5643315 1.2281644
SITE_TEXTC51.0 Labium majus 0.9334178 0.6416609 1.3578336
SITE_TEXTC51.1 Labium minus 0.8695988 0.5858887 1.2906924
SITE_TEXTC51.2 Clitoris 1.0616097 0.6326091 1.7815346
SITE_TEXTC51.8 Overlapping lesion of vulva 0.9416854 0.6461185 1.3724594
SITE_TEXTC51.9 Vulva, NOS 0.9380658 0.6471914 1.3596712
SITE_TEXTC52.9 Vagina, NOS 1.0495970 0.5559643 1.9815190
SITE_TEXTC60.2 Body of penis 0.9607815 0.5098412 1.8105658
SITE_TEXTC60.8 Overlapping lesion of penis 1.1111336 0.6621243 1.8646316
SITE_TEXTC60.9 Penis 1.0027912 0.6848883 1.4682545
Metastasis at Time of Diagnosis
fit_mets <- glm(mets_at_dx_F ~
FACILITY_TYPE_F + FACILITY_GEOGRAPHY + CROWFLY +
AGE_F + SEX_F + RACE_F + HISPANIC + INSURANCE_F + INCOME_F +
EDUCATION_F + YEAR_OF_DIAGNOSIS + SITE_TEXT,
data = data)
# the following variables were excluded to
# improve the R-squared of the regression (initially residual = 4.7169):
#
summary(fit_mets)
Call:
glm(formula = mets_at_dx_F ~ FACILITY_TYPE_F + FACILITY_GEOGRAPHY +
CROWFLY + AGE_F + SEX_F + RACE_F + HISPANIC + INSURANCE_F +
INCOME_F + EDUCATION_F + YEAR_OF_DIAGNOSIS + SITE_TEXT, data = data)
Deviance Residuals:
Min 1Q Median 3Q Max
-0.10474 -0.00900 -0.00140 0.00526 0.98148
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -2.246e-03 4.563e-02 -0.049 0.96076
FACILITY_TYPE_FComprehensive Comm Ca Program 9.826e-03 1.150e-02 0.855 0.39297
FACILITY_TYPE_FAcademic/Research Program 4.835e-03 1.139e-02 0.424 0.67138
FACILITY_TYPE_FIntegrated Network Ca Program 5.693e-03 1.202e-02 0.474 0.63590
FACILITY_GEOGRAPHYSouth -5.501e-03 5.120e-03 -1.074 0.28291
FACILITY_GEOGRAPHYMidwest -2.534e-03 4.877e-03 -0.520 0.60344
FACILITY_GEOGRAPHYWest -4.009e-03 5.529e-03 -0.725 0.46853
CROWFLY -7.566e-07 1.352e-05 -0.056 0.95539
AGE_F(54,64] 1.886e-03 6.725e-03 0.281 0.77912
AGE_F(64,74] 6.281e-03 7.180e-03 0.875 0.38186
AGE_F(74,100] 6.812e-03 7.118e-03 0.957 0.33877
SEX_FFemale -1.828e-03 7.293e-03 -0.251 0.80217
RACE_FBlack -4.189e-04 1.254e-02 -0.033 0.97334
RACE_FOther/Unk -4.283e-03 1.120e-02 -0.382 0.70217
RACE_FAsian 2.455e-02 8.083e-03 3.037 0.00244 **
HISPANICYes 1.957e-02 9.636e-03 2.031 0.04243 *
HISPANICUnknown 1.026e-03 7.821e-03 0.131 0.89568
INSURANCE_FNone -9.324e-03 1.353e-02 -0.689 0.49098
INSURANCE_FMedicaid -1.555e-02 1.365e-02 -1.140 0.25469
INSURANCE_FMedicare -5.955e-03 4.991e-03 -1.193 0.23304
INSURANCE_FOther Government -1.559e-03 2.197e-02 -0.071 0.94344
INSURANCE_FUnknown -6.928e-03 1.633e-02 -0.424 0.67146
INCOME_F$38,000 - $47,999 6.589e-03 6.394e-03 1.031 0.30293
INCOME_F$48,000 - $62,999 1.204e-02 6.619e-03 1.819 0.06917 .
INCOME_F$63,000 + 1.702e-02 7.288e-03 2.336 0.01966 *
EDUCATION_F13 - 20.9% -8.845e-03 6.385e-03 -1.385 0.16621
EDUCATION_F7 - 12.9% -1.294e-02 6.528e-03 -1.983 0.04759 *
EDUCATION_FLess than 7% -2.165e-02 7.338e-03 -2.951 0.00323 **
YEAR_OF_DIAGNOSIS2005 -1.998e-03 9.430e-03 -0.212 0.83220
YEAR_OF_DIAGNOSIS2006 -4.035e-03 9.234e-03 -0.437 0.66219
YEAR_OF_DIAGNOSIS2007 -1.436e-03 8.973e-03 -0.160 0.87288
YEAR_OF_DIAGNOSIS2008 -3.889e-04 8.802e-03 -0.044 0.96476
YEAR_OF_DIAGNOSIS2009 -1.462e-03 9.001e-03 -0.162 0.87096
YEAR_OF_DIAGNOSIS2010 1.291e-02 8.943e-03 1.444 0.14902
YEAR_OF_DIAGNOSIS2011 -3.060e-03 8.794e-03 -0.348 0.72789
YEAR_OF_DIAGNOSIS2012 -2.169e-03 9.182e-03 -0.236 0.81329
YEAR_OF_DIAGNOSIS2013 6.084e-03 8.898e-03 0.684 0.49428
YEAR_OF_DIAGNOSIS2014 3.822e-03 8.889e-03 0.430 0.66729
YEAR_OF_DIAGNOSIS2015 2.622e-03 8.466e-03 0.310 0.75687
SITE_TEXTC44.3 Skin of ear and unspecified parts of face -9.680e-03 6.130e-02 -0.158 0.87455
SITE_TEXTC44.4 Skin of scalp and neck -1.244e-03 5.598e-02 -0.022 0.98227
SITE_TEXTC44.5 Skin of trunk 9.195e-03 4.344e-02 0.212 0.83240
SITE_TEXTC44.6 Skin of upper limb and shoulder -6.175e-03 4.906e-02 -0.126 0.89984
SITE_TEXTC44.7 Skin of lower limb and hip 7.838e-02 4.667e-02 1.679 0.09331 .
SITE_TEXTC44.8 Overlapping lesion of skin -3.863e-04 4.700e-02 -0.008 0.99344
SITE_TEXTC44.9 Skin, NOS -3.867e-03 4.561e-02 -0.085 0.93245
SITE_TEXTC51.0 Labium majus -3.474e-03 4.430e-02 -0.078 0.93751
SITE_TEXTC51.1 Labium minus -2.891e-03 4.677e-02 -0.062 0.95072
SITE_TEXTC51.2 Clitoris -4.121e-03 6.129e-02 -0.067 0.94640
SITE_TEXTC51.8 Overlapping lesion of vulva -1.170e-03 4.459e-02 -0.026 0.97908
SITE_TEXTC51.9 Vulva, NOS -1.240e-04 4.393e-02 -0.003 0.99775
SITE_TEXTC52.9 Vagina, NOS -4.835e-04 7.514e-02 -0.006 0.99487
SITE_TEXTC60.2 Body of penis -2.164e-02 7.510e-02 -0.288 0.77323
SITE_TEXTC60.8 Overlapping lesion of penis -1.678e-02 6.123e-02 -0.274 0.78405
SITE_TEXTC60.9 Penis -8.980e-03 4.515e-02 -0.199 0.84238
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for gaussian family taken to be 0.003667907)
Null deviance: 4.9814 on 1340 degrees of freedom
Residual deviance: 4.7169 on 1286 degrees of freedom
(19 observations deleted due to missingness)
AIC: -3659.1
Number of Fisher Scoring iterations: 2
exp(cbind("Odds ratio" = coef(fit_mets), confint.default(fit_surg, level = 0.95)))
number of rows of result is not a multiple of vector length (arg 1)
Odds ratio 2.5 % 97.5 %
(Intercept) 0.9977569 1.5457663 3.3703132
FACILITY_TYPE_FComprehensive Comm Ca Program 1.0098744 1.0741650 1.3098309
FACILITY_TYPE_FAcademic/Research Program 1.0048465 1.1098380 1.3511222
FACILITY_TYPE_FIntegrated Network Ca Program 1.0057094 1.0984706 1.3514208
FACILITY_LOCATION_FMiddle Atlantic 0.9945144 0.9823566 1.1483911
FACILITY_LOCATION_FSouth Atlantic 0.9974693 0.9936150 1.1618048
FACILITY_LOCATION_FEast North Central 0.9959987 0.9836801 1.1519857
FACILITY_LOCATION_FEast South Central 0.9999992 0.9346984 1.1250120
FACILITY_LOCATION_FWest North Central 1.0018882 0.9712046 1.1490674
FACILITY_LOCATION_FWest South Central 1.0063008 0.9773330 1.1704730
FACILITY_LOCATION_FMountain 1.0068353 0.9298858 1.1215533
FACILITY_LOCATION_FPacific 0.9981740 0.9548599 1.1253096
CHEMO_YNYes 0.9995812 0.6965232 0.8493930
RADIATION_YNYes 0.9957263 0.5520826 0.6298419
IMMUNO_YNYes 1.0248521 0.5627377 0.6417435
AGE_F(54,64] 1.0197677 0.9505095 1.0667637
AGE_F(64,74] 1.0010262 0.9216843 1.0426608
AGE_F(74,100] 0.9907196 0.8626780 0.9749483
SEX_FFemale 0.9845696 0.9468771 1.0733025
RACE_FBlack 0.9940631 0.8225687 1.0207841
RACE_FOther/Unk 0.9984423 0.8705686 1.0572071
RACE_FAsian 0.9930964 0.9505355 1.0941834
HISPANICYes 1.0066112 0.9237778 1.0905714
HISPANICUnknown 1.0121116 0.9614583 1.1035687
INSURANCE_FNone 1.0171696 0.9316619 1.1707760
INSURANCE_FMedicaid 0.9911936 0.7538137 0.9545322
INSURANCE_FMedicare 0.9871386 0.9686253 1.0544896
INSURANCE_FOther Government 0.9785821 0.9026097 1.3414528
INSURANCE_FUnknown 0.9980035 0.7395891 0.9836876
INCOME_F$38,000 - $47,999 0.9959727 0.9825787 1.0931054
INCOME_F$48,000 - $62,999 0.9985652 0.9615730 1.0686626
INCOME_F$63,000 + 0.9996112 0.9550985 1.0596392
YEAR_OF_DIAGNOSIS2005 0.9985387 0.8922150 1.0512723
YEAR_OF_DIAGNOSIS2006 1.0129963 0.9375456 1.1007709
YEAR_OF_DIAGNOSIS2007 0.9969444 0.8861404 1.0366234
YEAR_OF_DIAGNOSIS2008 0.9978333 0.9562699 1.1134542
YEAR_OF_DIAGNOSIS2009 1.0061024 0.9081843 1.0610225
YEAR_OF_DIAGNOSIS2010 1.0038294 0.9330281 1.0911199
YEAR_OF_DIAGNOSIS2011 1.0026251 0.9044774 1.0535009
YEAR_OF_DIAGNOSIS2012 0.9903663 0.9106737 1.0680287
YEAR_OF_DIAGNOSIS2013 0.9987567 0.8911863 1.0394772
YEAR_OF_DIAGNOSIS2014 1.0092373 0.8854901 1.0330336
YEAR_OF_DIAGNOSIS2015 0.9938436 0.9050425 1.0487749
SITE_TEXTC44.3 Skin of ear and unspecified parts of face 1.0815320 0.6161945 1.7399009
SITE_TEXTC44.4 Skin of scalp and neck 0.9996138 0.6102982 1.5723573
SITE_TEXTC44.5 Skin of trunk 0.9961408 0.6172570 1.2847405
SITE_TEXTC44.6 Skin of upper limb and shoulder 0.9965321 0.5458001 1.2492437
SITE_TEXTC44.7 Skin of lower limb and hip 0.9971129 0.6042699 1.3443356
SITE_TEXTC44.8 Overlapping lesion of skin 0.9958877 0.5711006 1.2697031
SITE_TEXTC44.9 Skin, NOS 0.9988310 0.5517221 1.1981104
SITE_TEXTC51.0 Labium majus 0.9998760 0.6309594 1.3335806
SITE_TEXTC51.1 Labium minus 0.9995167 0.5785708 1.2737706
SITE_TEXTC51.2 Clitoris 0.9785884 0.6231168 1.7534793
SITE_TEXTC51.8 Overlapping lesion of vulva 0.9833584 0.6369175 1.3516725
SITE_TEXTC51.9 Vulva, NOS 0.9910605 0.6378399 1.3385614
SITE_TEXTC52.9 Vagina, NOS 0.9977569 0.5552974 1.9789396
SITE_TEXTC60.2 Body of penis 1.0098744 0.5127871 1.8205651
SITE_TEXTC60.8 Overlapping lesion of penis 1.0048465 0.6513181 1.8326073
SITE_TEXTC60.9 Penis 1.0057094 0.6757319 1.4478081
LS0tCnRpdGxlOiAiRXh0cmFtYW1tYXJ5IFBhZ2V0IERpc2Vhc2UgLSBSZXZpZXcgb2YgdGhlIE5DREIiCmF1dGhvcjogIlJhbWllIEZhdGh5IgpkYXRlOiAiMTEvMDUvMjAxOSIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6CiAgICB0aGVtZTogdW5pdGVkCiAgICB0b2M6IHllcwogICAgdG9jX2Zsb2F0OiB5ZXMKICBodG1sX2RvY3VtZW50OgogICAgdG9jOiB5ZXMKLS0tCgoKCmBgYHtyLCBlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQoKbGlicmFyeSgiZ2dwbG90MiIpCmxpYnJhcnkoImRwbHlyIikKbGlicmFyeSgidGlkeXIiKQpsaWJyYXJ5KCJrbml0ciIpCmxpYnJhcnkoInRhYmxlb25lIikKbGlicmFyeSgiZm9yY2F0cyIpCmxpYnJhcnkoInN1cnZpdmFsIikKbGlicmFyeSgibnBzdXJ2IikKbGlicmFyeSgiYnJvb20iKQpsaWJyYXJ5KCJ0aWJibGUiKQpsaWJyYXJ5KCJyZWFkciIpCmxpYnJhcnkoInN1cnZtaW5lciIpCmxpYnJhcnkoInN0cmluZ3IiKQoKCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvPVRSVUUsIHdhcm5pbmc9RkFMU0UsIG1lc3NhZ2U9VFJVRSkKJyUhaW4lJyA8LSBmdW5jdGlvbih4LHkpISgnJWluJScoeCx5KSkKYGBgCgpgYGB7cn0KcF90YWJsZSA8LSBmdW5jdGlvbih0YWJfZGF0YSwgLi4uKSB7CiAgdGFiX2RhdGFfMiA8LSBkZXBhcnNlKHN1YnN0aXR1dGUodGFiX2RhdGEpKQogIAogIHRhYmxlX3AgPC0gZG8uY2FsbChDcmVhdGVUYWJsZU9uZSwgCiAgICAgICAgICAgICAgICAgICAgIGxpc3QoZGF0YSA9IGFzLm5hbWUodGFiX2RhdGFfMiksIGluY2x1ZGVOQSA9IFRSVUUsIC4uLikpCiAgdGFibGVfcF9vdXQgPC0gcHJpbnQodGFibGVfcCwKICAgICAgICAgICAgICAgICAgICAgICBzaG93QWxsTGV2ZWxzID0gVFJVRSwKICAgICAgICAgICAgICAgICAgICAgICBwcmludFRvZ2dsZSA9IEZBTFNFKQogIGthYmxlKHRhYmxlX3Bfb3V0LAogICAgICAgIGFsaWduID0gImMiKQp9CmBgYAoKYGBge3J9CnVuaV92YXIgPC0gZnVuY3Rpb24odGVzdF92YXIsIGRhdGFfaW1wKSB7CgogICAgICAgICAgICAgICAgCiAgICAgICAgY2F0KCJfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fIikKICAgICAgICBjYXQoIlxuIikKICAgICAgICBjYXQoIiAgIFxuIyMiLCB0ZXN0X3ZhcikKICAgICAgICBjYXQoIlxuIikKICAgICAgICBjYXQoIl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18iKQogICAgICAgIGNhdCgiXG4iKQoKICAgICAgICAKICAgICAgICBmIDwtIGFzLmZvcm11bGEocGFzdGUoIlN1cnYoRFhfTEFTVENPTlRBQ1RfREVBVEhfTU9OVEhTLCBQVUZfVklUQUxfU1RBVFVTID09IDApIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMubmFtZSh0ZXN0X3ZhciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcCA9ICIgfiAiICkpCiAgICAgICAgCiAgICAgICAgZGF0YV9pbXBfMiA8LSBkZXBhcnNlKHN1YnN0aXR1dGUoZGF0YV9pbXApKQoKICAgICAgICBrbV9maXQgPC0gZG8uY2FsbCgic3VydmZpdCIsIGxpc3QoZm9ybXVsYSA9IGYsIGRhdGEgPSBhcy5uYW1lKGRhdGFfaW1wXzIpKSkKCiAgICAgICAgcHJpbnQoa21fZml0KQogICAgICAgIGNhdCgiXG4iKQoKICAgICAgICBwcmludChzdW1tYXJ5KGttX2ZpdCwgdGltZXMgPSBjKDEyLCAyNCwgMzYsIDQ4LCA2MCwgMTIwKSkpCiAgICAgICAgY2F0KCJcbiIpCgoKICAgICAgICBjYXQoIlxuIikKICAgICAgICBjYXQoIlxuIikKICAgICAgICBjYXQoIiAgIFxuIyMgVW5pdmFyaWFibGUgQ294IFByb3BvcnRpb25hbCBIYXphcmQgTW9kZWwgZm9yOiAiLCB0ZXN0X3ZhcikKICAgICAgICBjYXQoIlxuIikKICAgICAgICBjYXQoIlxuIikKCgogICAgICAgIG5fbGV2ZWxzIDwtIG5sZXZlbHMoZGF0YV9pbXBbW3Rlc3RfdmFyXV0pCgogICAgICAgIGlmKG5fbGV2ZWxzID09IDEpewogICAgICAgICAgICAgICAgcHJpbnQoIk9ubHkgb25lIGxldmVsLCBubyBDb3ggbW9kZWwgcGVyZm9ybWVkIikKICAgICAgICAgICAgICAgIGNhdCgiXG4iKQoKICAgICAgICB9IGVsc2UgewoKCiAgICAgICAgICAgICAgICBjb3hfZml0IDwtIGRvLmNhbGwoImNveHBoIiwgbGlzdChmb3JtdWxhID0gZiwgZGF0YSA9IGFzLm5hbWUoZGF0YV9pbXBfMikpKQoKICAgICAgICAgICAgICAgIHByaW50KHN1bW1hcnkoY294X2ZpdCkpCiAgICAgICAgICAgICAgICBjYXQoIlxuIikKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgZG8uY2FsbCgiZ2dmb3Jlc3QiLAogICAgICAgICAgICAgICAgICAgICAgICAgbGlzdChtb2RlbCA9IGNveF9maXQsIGRhdGEgPSBhcy5uYW1lKGRhdGFfaW1wXzIpKSkKCgogICAgICAgIH0KCiAgICAgICAgY2F0KCJcbiIpCiAgICAgICAgY2F0KCJcbiIpCiAgICAgICAgY2F0KCJcbiIpCiAgICAgICAgY2F0KCIgICBcbiMjIFVuYWRqdXN0ZWQgS2FwbGFuIE1laWVyIE92ZXJhbGwgU3Vydml2YWwgQ3VydmUgZm9yOiAiLCB0ZXN0X3ZhcikKCgogICAgICAgIHAgPC0gZG8uY2FsbCgiZ2dzdXJ2cGxvdCIsCiAgICAgICAgICAgICAgICAgICAgIGxpc3QoZml0ID0ga21fZml0LCBkYXRhID0gYXMubmFtZShkYXRhX2ltcF8yKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBwYWxldHRlID0gImpjbyIsIGNlbnNvciA9IEZBTFNFLCBsZWdlbmQgPSAicmlnaHQiLAogICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmV0eXBlID0gInN0cmF0YSIsIHhsYWIgPSAiVGltZSAoTW9udGhzKSIpKQoKICAgICAgICBwcmludChwKQoKfQoKYGBgCgpgYGB7cn0KZl9wbG90IDwtIGZ1bmN0aW9uKHRlc3RfdmFyLCBkYXRhX2ltcCl7CgogICAgICAgICAgICAgICAgCiAgICAgICAgY2F0KCJfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fIikKICAgICAgICBjYXQoIlxuIikKICAgICAgICBjYXQoIiAgIFxuIyMiLCB0ZXN0X3ZhcikKICAgICAgICBjYXQoIlxuIikKICAgICAgICBjYXQoIl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18iKQogICAgICAgIGNhdCgiXG4iKQoKICAgICAgICAKICAgICAgICBmIDwtIGFzLmZvcm11bGEocGFzdGUoYXMubmFtZSh0ZXN0X3ZhciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBR0UgKyBTRVggKyBUX1NJWkUgKyBGQUNJTElUWV9UWVBFX0YgKyBGQUNJTElUWV9MT0NBVElPTl9GICsgWUVBUl9PRl9ESUFHTk9TSVMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXAgPSAiIH4gIiApKQogICAgICAgIAogICAgICAgIGRhdGFfaW1wXzIgPC0gZGVwYXJzZShzdWJzdGl0dXRlKGRhdGFfaW1wKSkKICAgICAgICAKICAgICAgICBmaXRfZm4gPC0gZG8uY2FsbCgiZ2xtIiwgCiAgICAgICAgICAgICAgICAgICAgICAgbGlzdChmb3JtdWxhID0gZiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gYXMubmFtZShkYXRhX2ltcF8yKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYW1pbHkgPSAiYmlub21pYWwiKSkKICAgICAgICAKICAgICAgICBwcmludChzdW1tYXJ5KGZpdF9mbikpCiAgICAgICAgCiAgICAgICAgb3IgPC0gYXMuZGF0YS5mcmFtZShleHAoY29lZmZpY2llbnRzKGZpdF9mbikpKQogICAgICAgIG9yJFZhcmlhYmxlIDwtIHJvd25hbWVzKG9yKQogICAgICAgIHJvd25hbWVzKG9yKSA8LSBjKCkKICAgICAgICBuYW1lcyhvcikgPC0gYygnT2Rkc1JhdGlvJywgJ1ZhcmlhYmxlJykKCiAgICAgICAgY2kgPC0gYXMuZGF0YS5mcmFtZShleHAoY29uZmludChmaXRfZm4pKSkKICAgICAgICBjaSRWYXJpYWJsZSA8LSByb3duYW1lcyhjaSkKICAgICAgICByb3duYW1lcyhjaSkgPC0gYygpCgogICAgICAgIHBfdmFsX2xpc3QgPC0gdGlkeShmaXRfZm4pICU+JQogICAgICAgIHNlbGVjdCh0ZXJtLCBwLnZhbHVlKSAlPiUKICAgICAgICByZW5hbWUoVmFyaWFibGUgPSB0ZXJtKSAlPiUKICAgICAgICBtdXRhdGUocC52YWx1ZSA9IHJvdW5kKHAudmFsdWUsIDQpKQogICAgICAgIHBfdmFsX2xpc3QkcC52YWx1ZSA8LSBhcy5jaGFyYWN0ZXIocF92YWxfbGlzdCRwLnZhbHVlKQogICAgICAgIHBfdmFsX2xpc3QkcC52YWx1ZVtwX3ZhbF9saXN0JHAudmFsdWUgPT0gIjAiXSA8LSAiPCAwLjAwMDEiCgogICAgICAgIGFsbCA8LSBmdWxsX2pvaW4ob3IsIGNpLCBieSA9ICdWYXJpYWJsZScpCiAgICAgICAgYWxsIDwtIGZ1bGxfam9pbihhbGwsIHBfdmFsX2xpc3QsIGJ5ID0gIlZhcmlhYmxlIikKICAgICAgICBuYW1lcyhhbGwpIDwtIGMoJ09kZHNSYXRpbycsICdWYXJpYWJsZScsICdMb3dlcicsICdVcHBlcicsICJwX3ZhbHVlIikKICAgICAgICBhbGwgPC0gbmEub21pdChhbGwpCgogICAgICAgIGFsbCA8LSBhbGwgJT4lCiAgICAgICAgZmlsdGVyKFZhcmlhYmxlICE9ICcoSW50ZXJjZXB0KScpIAoKCiAgICAgICAgdGV4dCA8LSBjYmluZChjKCJWYXJpYWJsZSIsIGFzLmNoYXJhY3RlcihhbGwkVmFyaWFibGUpKSwgCiAgICAgICAgICAgICAgYygiT2RkcyBSYXRpbyIsIGFzLmNoYXJhY3Rlcihyb3VuZChhbGwkT2Rkc1JhdGlvLCAyKSkpLAogICAgICAgICAgICAgIGMoIkxvd2VyIENJIiwgYXMuY2hhcmFjdGVyKHJvdW5kKGFsbCRMb3dlciwgMikpKSwKICAgICAgICAgICAgICBjKCJVcHBlciBDSSIsIGFzLmNoYXJhY3Rlcihyb3VuZChhbGwkVXBwZXIsIDIpKSksCiAgICAgICAgICAgICAgYygicCBWYWx1ZSIsIGFsbCRwX3ZhbHVlKSkKCgogICAgICAgIGZvcmVzdHBsb3QodGV4dCwgCiAgICAgICAgICAgbWVhbiA9IGMoTkEsIGFsbCRPZGRzUmF0aW8pLCAKICAgICAgICAgICBsb3dlciA9IGMoTkEsIGFsbCRMb3dlciksIAogICAgICAgICAgIHVwcGVyID0gYyhOQSwgYWxsJFVwcGVyKSwgCiAgICAgICAgICAgbmV3X3BhZ2UgPSAgIFRSVUUsIHplcm8gPSAxLCAKICAgICAgICAgICBjbGlwID0gYygwLjEsIDEwMCksCiAgICAgICAgICAgaHJ6bF9saW5lcyA9IGxpc3QoIjIiID0gZ3Bhcihjb2w9IiM0NDQ0NDQiKSksCiAgICAgICAgICAgdmVydGljZXMgPSBUUlVFLAogICAgICAgICAgIGdyYXBoLnBvcyA9IDIsCiAgICAgICAgICAgeGxhYiA9ICJPZGRzIFJhdGlvIChsb2cpIiwKICAgICAgICAgICBhbGlnbiA9ICJjIiwKICAgICAgICAgICB0eHRfZ3AgPSBmcFR4dEdwKGNleCA9IDAuNyksCiAgICAgICAgICAgeHRpY2tzID0gZ2V0VGlja3MobG93ID0gYWxsJExvd2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2ggPSBhbGwkVXBwZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpcD1jKC1JbmYsIEluZiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwPVRSVUUpLAogICAgICAgICAgIGJveHNpemUgPSAwLjEpCiAgICAKfQpgYGAKCmBgYHtyIGNodW5rMiwgY2FjaGU9VFJVRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgcmVzdWx0cz0naGlkZSd9CmNvbC53aWR0aCA8LSBjKDM3LCAxMCwgMSwgMSwgMywgMSwgMiwgMSwgMiwgMSwgMSwgMSwgMSwgMSwgMSwgOCwgMiwgMiwgMiwgNCwgNCwgMSwgNCwgMSwgMSwKICAgICAgICAgICAgICAgMSwgMywgMiwgMiwgOCwgMiwgNSwgNSwgNSwgNCwgNSwgNSwgNSw0LCAyLCAxLCAyLCAxLCAzLCAxLCAxLCAxLCAxLCAxLCAxLCAzLAogICAgICAgICAgICAgICAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCA2LCA4LAogICAgICAgICAgICAgICA4LCA4LCAyLCAxLCAxLCAxLCAxLCA4LCAxLCAxLCA4LCAxLCAxLCAyLCAyLCA1LCAyLCA1LCAzLCAxLCAzLCAxLCA4LCA4LCAyLCA4LAogICAgICAgICAgICAgICAyLCA4LCAyLCAyLCAxLCA4LCAxLCAxLCAxLCAxLCAxLCA4LCAxLCAyLCAyLCAyLCAyLCAyLCAxLCAxLCAxLCAyLCAxLCAzLCAxLCAxLAogICAgICAgICAgICAgICAxLCAxLCAxLCAxLCAxLCAxLCAxKQoKY29sLm5hbWVzLmFiciA8LSBjKCJQVUZfQ0FTRV9JRCIsICJQVUZfRkFDSUxJVFlfSUQiLCAiRkFDSUxJVFlfVFlQRV9DRCIsICJGQUNJTElUWV9MT0NBVElPTl9DRCIsCiAgICAgICAgICAgICAgICAgICAiQUdFIiwgIlNFWCIsICJSQUNFIiwgIlNQQU5JU0hfSElTUEFOSUNfT1JJR0lOIiwgIklOU1VSQU5DRV9TVEFUVVMiLAogICAgICAgICAgICAgICAgICAgIk1FRF9JTkNfUVVBUl8wMCIsICJOT19IU0RfUVVBUl8wMCIsICJVUl9DRF8wMyIsICJNRURfSU5DX1FVQVJfMTIiLCAiTk9fSFNEX1FVQVJfMTIiLAogICAgICAgICAgICAgICAgICAgIlVSX0NEXzEzIiwgIkNST1dGTFkiLCAiQ0RDQ19UT1RBTF9CRVNUIiwgIlNFUVVFTkNFX05VTUJFUiIsICJDTEFTU19PRl9DQVNFIiwKICAgICAgICAgICAgICAgICAgICJZRUFSX09GX0RJQUdOT1NJUyIsICJQUklNQVJZX1NJVEUiLCAiTEFURVJBTElUWSIsICJISVNUT0xPR1kiLCAiQkVIQVZJT1IiLCAiR1JBREUiLAogICAgICAgICAgICAgICAgICAgIkRJQUdOT1NUSUNfQ09ORklSTUFUSU9OIiwgIlRVTU9SX1NJWkUiLCAiUkVHSU9OQUxfTk9ERVNfUE9TSVRJVkUiLAogICAgICAgICAgICAgICAgICAgIlJFR0lPTkFMX05PREVTX0VYQU1JTkVEIiwgIkRYX1NUQUdJTkdfUFJPQ19EQVlTIiwgIlJYX1NVTU1fRFhTVEdfUFJPQyIsICJUTk1fQ0xJTl9UIiwKICAgICAgICAgICAgICAgICAgICJUTk1fQ0xJTl9OIiwgIlROTV9DTElOX00iLCAiVE5NX0NMSU5fU1RBR0VfR1JPVVAiLCAiVE5NX1BBVEhfVCIsICJUTk1fUEFUSF9OIiwgIlROTV9QQVRIX00iLAogICAgICAgICAgICAgICAgICAgIlROTV9QQVRIX1NUQUdFX0dST1VQIiwgIlROTV9FRElUSU9OX05VTUJFUiIsICJBTkFMWVRJQ19TVEFHRV9HUk9VUCIsICJDU19NRVRTX0FUX0RYIiwKICAgICAgICAgICAgICAgICAgICJDU19NRVRTX0VWQUwiLCAiQ1NfRVhURU5TSU9OIiwgIkNTX1RVTU9SX1NJWkVFWFRfRVZBTCIsICJDU19NRVRTX0RYX0JPTkUiLCAiQ1NfTUVUU19EWF9CUkFJTiIsCiAgICAgICAgICAgICAgICAgICAiQ1NfTUVUU19EWF9MSVZFUiIsICJDU19NRVRTX0RYX0xVTkciLCAiTFlNUEhfVkFTQ1VMQVJfSU5WQVNJT04iLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8xIiwKICAgICAgICAgICAgICAgICAgICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzIiLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8zIiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfNCIsCiAgICAgICAgICAgICAgICAgICAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl81IiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfNiIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzciLAogICAgICAgICAgICAgICAgICAgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfOCIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzkiLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8xMCIsCiAgICAgICAgICAgICAgICAgICAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8xMSIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzEyIiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMTMiLAogICAgICAgICAgICAgICAgICAgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMTQiLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8xNSIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzE2IiwKICAgICAgICAgICAgICAgICAgICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzE3IiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMTgiLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8xOSIsCiAgICAgICAgICAgICAgICAgICAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8yMCIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzIxIiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMjIiLAogICAgICAgICAgICAgICAgICAgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMjMiLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8yNCIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzI1IiwKICAgICAgICAgICAgICAgICAgICJDU19WRVJTSU9OX0xBVEVTVCIsICJEWF9SWF9TVEFSVEVEX0RBWVMiLCAiRFhfU1VSR19TVEFSVEVEX0RBWVMiLCAiRFhfREVGU1VSR19TVEFSVEVEX0RBWVMiLAogICAgICAgICAgICAgICAgICAgIlJYX1NVTU1fU1VSR19QUklNX1NJVEUiLCAiUlhfSE9TUF9TVVJHX0FQUFJfMjAxMCIsICJSWF9TVU1NX1NVUkdJQ0FMX01BUkdJTlMiLAogICAgICAgICAgICAgICAgICAgIlJYX1NVTU1fU0NPUEVfUkVHX0xOX1NVUiIsICJSWF9TVU1NX1NVUkdfT1RIX1JFR0RJUyIsICJTVVJHX0RJU0NIQVJHRV9EQVlTIiwgIlJFQURNX0hPU1BfMzBfREFZUyIsCiAgICAgICAgICAgICAgICAgICAiUkVBU09OX0ZPUl9OT19TVVJHRVJZIiwgIkRYX1JBRF9TVEFSVEVEX0RBWVMiLCAiUlhfU1VNTV9SQURJQVRJT04iLCAiUkFEX0xPQ0FUSU9OX09GX1JYIiwKICAgICAgICAgICAgICAgICAgICJSQURfVFJFQVRfVk9MIiwgIlJBRF9SRUdJT05BTF9SWF9NT0RBTElUWSIsICJSQURfUkVHSU9OQUxfRE9TRV9DR1kiLCAiUkFEX0JPT1NUX1JYX01PREFMSVRZIiwKICAgICAgICAgICAgICAgICAgICJSQURfQk9PU1RfRE9TRV9DR1kiLCAiUkFEX05VTV9UUkVBVF9WT0wiLCAiUlhfU1VNTV9TVVJHUkFEX1NFUSIsICJSQURfRUxBUFNFRF9SWF9EQVlTIiwKICAgICAgICAgICAgICAgICAgICJSRUFTT05fRk9SX05PX1JBRElBVElPTiIsICJEWF9TWVNURU1JQ19TVEFSVEVEX0RBWVMiLCAiRFhfQ0hFTU9fU1RBUlRFRF9EQVlTIiwgIlJYX1NVTU1fQ0hFTU8iLAogICAgICAgICAgICAgICAgICAgIkRYX0hPUk1PTkVfU1RBUlRFRF9EQVlTIiwgIlJYX1NVTU1fSE9STU9ORSIsICJEWF9JTU1VTk9fU1RBUlRFRF9EQVlTIiwgIlJYX1NVTU1fSU1NVU5PVEhFUkFQWSIsCiAgICAgICAgICAgICAgICAgICAiUlhfU1VNTV9UUk5TUExOVF9FTkRPIiwgIlJYX1NVTU1fU1lTVEVNSUNfU1VSX1NFUSIsICJEWF9PVEhFUl9TVEFSVEVEX0RBWVMiLCAiUlhfU1VNTV9PVEhFUiIsCiAgICAgICAgICAgICAgICAgICAiUEFMTElBVElWRV9DQVJFIiwgIlJYX1NVTU1fVFJFQVRNRU5UX1NUQVRVUyIsICJQVUZfMzBfREFZX01PUlRfQ0QiLCAiUFVGXzkwX0RBWV9NT1JUX0NEIiwKICAgICAgICAgICAgICAgICAgICJEWF9MQVNUQ09OVEFDVF9ERUFUSF9NT05USFMiLCAiUFVGX1ZJVEFMX1NUQVRVUyIsICJSWF9IT1NQX1NVUkdfUFJJTV9TSVRFIiwgIlJYX0hPU1BfQ0hFTU8iLAogICAgICAgICAgICAgICAgICAgIlJYX0hPU1BfSU1NVU5PVEhFUkFQWSIsICJSWF9IT1NQX0hPUk1PTkUiLCAiUlhfSE9TUF9PVEhFUiIsICJQVUZfTVVMVF9TT1VSQ0UiLCAiUkVGRVJFTkNFX0RBVEVfRkxBRyIsCiAgICAgICAgICAgICAgICAgICAiUlhfU1VNTV9TQ09QRV9SRUdfTE5fMjAxMiIsICJSWF9IT1NQX0RYU1RHX1BST0MiLCAiUEFMTElBVElWRV9DQVJFX0hPU1AiLCAiVFVNT1JfU0laRV9TVU1NQVJZIiwKICAgICAgICAgICAgICAgICAgICJNRVRTX0FUX0RYX09USEVSIiwgIk1FVFNfQVRfRFhfRElTVEFOVF9MTiIsICJNRVRTX0FUX0RYX0JPTkUiLCAiTUVUU19BVF9EWF9CUkFJTiIsCiAgICAgICAgICAgICAgICAgICAiTUVUU19BVF9EWF9MSVZFUiIsICJNRVRTX0FUX0RYX0xVTkciLCAiTk9fSFNEX1FVQVJfMTYiLCAiTUVEX0lOQ19RVUFSXzE2IiwgIk1FRElDQUlEX0VYUE5fQ09ERSIpCgoKCiNSZWFkIGluIGRhdGEgZm9yIGVhY2ggc3Vic2l0ZQpsaXAgPC0gcmVhZF9md2YoJ05DREJQVUZfTGlwLjMuMjAxNi4wLmRhdCcsIAogICAgICAgICAgICAgICAgICAgICAgIGZ3Zl93aWR0aHMoY29sLndpZHRoLCBjb2xfbmFtZXMgPSBjb2wubmFtZXMuYWJyKSwKICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKC5kZWZhdWx0ID0gY29sX2NoYXJhY3RlcigpKSkKCm1lbGFub21hIDwtIHJlYWRfZndmKCdOQ0RCUFVGX01lbGFub21hLjMuMjAxNi4wLmRhdCcsIAogICAgICAgICAgICAgICAgICAgICAgIGZ3Zl93aWR0aHMoY29sLndpZHRoLCBjb2xfbmFtZXMgPSBjb2wubmFtZXMuYWJyKSwKICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKC5kZWZhdWx0ID0gY29sX2NoYXJhY3RlcigpKSkKICAgICAgICAgICAgICAgICAgICAgICAKc2tpbiA8LSByZWFkX2Z3ZignTkNEQlBVRl9PdFNraW4uMy4yMDE2LjAuZGF0JywgCiAgICAgICAgICAgICAgICAgICAgICAgZndmX3dpZHRocyhjb2wud2lkdGgsIGNvbF9uYW1lcyA9IGNvbC5uYW1lcy5hYnIpLAogICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGNvbHMoLmRlZmF1bHQgPSBjb2xfY2hhcmFjdGVyKCkpKQoKaG9kZ2V4dHIgPC0gcmVhZF9md2YoJ05DREJQVUZfSG9kZ0V4dHIuMy4yMDE2LjAuZGF0JywgCiAgICAgICAgICAgICAgICAgICAgICAgZndmX3dpZHRocyhjb2wud2lkdGgsIGNvbF9uYW1lcyA9IGNvbC5uYW1lcy5hYnIpLAogICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGNvbHMoLmRlZmF1bHQgPSBjb2xfY2hhcmFjdGVyKCkpKQoKaG9kZ25kYWwgPC0gcmVhZF9md2YoJ05DREJQVUZfSG9kZ05kYWwuMy4yMDE2LjAuZGF0JywgCiAgICAgICAgICAgICAgICAgICAgICAgZndmX3dpZHRocyhjb2wud2lkdGgsIGNvbF9uYW1lcyA9IGNvbC5uYW1lcy5hYnIpLAogICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGNvbHMoLmRlZmF1bHQgPSBjb2xfY2hhcmFjdGVyKCkpKQoKTkhMbmRhbCA8LSByZWFkX2Z3ZignTkNEQlBVRl9OSExOZGFsLjMuMjAxNi4wLmRhdCcsIAogICAgICAgICAgICAgICAgICAgICAgIGZ3Zl93aWR0aHMoY29sLndpZHRoLCBjb2xfbmFtZXMgPSBjb2wubmFtZXMuYWJyKSwKICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKC5kZWZhdWx0ID0gY29sX2NoYXJhY3RlcigpKSkKCk5ITGV4dHIgPC0gcmVhZF9md2YoJ05DREJQVUZfTkhMRXh0ci4zLjIwMTYuMC5kYXQnLCAKICAgICAgICAgICAgICAgICAgICAgICBmd2Zfd2lkdGhzKGNvbC53aWR0aCwgY29sX25hbWVzID0gY29sLm5hbWVzLmFiciksCiAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGVzID0gY29scyguZGVmYXVsdCA9IGNvbF9jaGFyYWN0ZXIoKSkpCgoKYnJlYXN0IDwtICByZWFkX2Z3ZignTkNEQlBVRl9CcmVhc3QuMy4yMDE2LjAuZGF0JywgCiAgICAgICAgICAgICAgICAgICAgICAgZndmX3dpZHRocyhjb2wud2lkdGgsIGNvbF9uYW1lcyA9IGNvbC5uYW1lcy5hYnIpLAogICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGNvbHMoLmRlZmF1bHQgPSBjb2xfY2hhcmFjdGVyKCkpKQoKdnVsdmEgPC0gIHJlYWRfZndmKCdOQ0RCUFVGX1Z1bHZhLjMuMjAxNi4wLmRhdCcsIAogICAgICAgICAgICAgICAgICAgICAgIGZ3Zl93aWR0aHMoY29sLndpZHRoLCBjb2xfbmFtZXMgPSBjb2wubmFtZXMuYWJyKSwKICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKC5kZWZhdWx0ID0gY29sX2NoYXJhY3RlcigpKSkKCnZhZ2luYSA8LSAgcmVhZF9md2YoJ05DREJQVUZfVmFnaW5hLjMuMjAxNi4wLmRhdCcsIAogICAgICAgICAgICAgICAgICAgICAgIGZ3Zl93aWR0aHMoY29sLndpZHRoLCBjb2xfbmFtZXMgPSBjb2wubmFtZXMuYWJyKSwKICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKC5kZWZhdWx0ID0gY29sX2NoYXJhY3RlcigpKSkKCnBlbmlzIDwtICByZWFkX2Z3ZignTkNEQlBVRl9QZW5pcy4zLjIwMTYuMC5kYXQnLCAKICAgICAgICAgICAgICAgICAgICAgICBmd2Zfd2lkdGhzKGNvbC53aWR0aCwgY29sX25hbWVzID0gY29sLm5hbWVzLmFiciksCiAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGVzID0gY29scyguZGVmYXVsdCA9IGNvbF9jaGFyYWN0ZXIoKSkpCgpvdGxldWsgPC0gcmVhZF9md2YoJ05DREJQVUZfT3RMZXVrLjMuMjAxNi4wLmRhdCcsIAogICAgICAgICAgICAgICAgICAgICAgIGZ3Zl93aWR0aHMoY29sLndpZHRoLCBjb2xfbmFtZXMgPSBjb2wubmFtZXMuYWJyKSwKICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKC5kZWZhdWx0ID0gY29sX2NoYXJhY3RlcigpKSkKICAKb3RoZXJhY3V0ZWxldWsgIDwtIHJlYWRfZndmKCdOQ0RCUFVGX090QWNMZXVrLjMuMjAxNi4wLmRhdCcsIAogICAgICAgICAgICAgICAgICAgICAgIGZ3Zl93aWR0aHMoY29sLndpZHRoLCBjb2xfbmFtZXMgPSBjb2wubmFtZXMuYWJyKSwKICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKC5kZWZhdWx0ID0gY29sX2NoYXJhY3RlcigpKSkKICAKQUxMICA8LSByZWFkX2Z3ZignTkNEQlBVRl9BTHltTGV1ay4zLjIwMTYuMC5kYXQnLCAKICAgICAgICAgICAgICAgICAgICAgICBmd2Zfd2lkdGhzKGNvbC53aWR0aCwgY29sX25hbWVzID0gY29sLm5hbWVzLmFiciksCiAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGVzID0gY29scyguZGVmYXVsdCA9IGNvbF9jaGFyYWN0ZXIoKSkpCgoKI0NvbWJpbmUgZGF0YSBmb3IgYWxsIHN1YnNpdGVzCmRhdCA8LSBiaW5kX3Jvd3MobGlwLCBtZWxhbm9tYSwgc2tpbiwgaG9kZ2V4dHIsIGhvZGduZGFsLCBOSExuZGFsLCBicmVhc3QsIAogICAgICAgICAgICAgICAgIHZ1bHZhLCB2YWdpbmEsIHBlbmlzLCBOSExleHRyLCBvdGxldWssIG90aGVyYWN1dGVsZXVrLCBBTEwpCgpybShsaXAsIG1lbGFub21hLCBza2luLCBob2RnZXh0ciwgaG9kZ25kYWwsIE5ITG5kYWwsIGJyZWFzdCwgdnVsdmEsIHZhZ2luYSwgCiAgIHBlbmlzLCBOSExleHRyLCBvdGxldWssIG90aGVyYWN1dGVsZXVrLCBBTEwpCgpwcmltX3NpdGVfdGV4dCA8LSBkYXRhX2ZyYW1lKFBSSU1BUllfU0lURSA9IGMoCiNOSEwgc2l0ZXMKIkMwMDAiLCAKIkMwMDEiLCAKIkMwMDIiLCAKIkMwMDMiLCAKIkMwMDQiLCAKIkMwMDUiLCAKIkMwMDYiLCAKIkMwMDgiLAoiQzAwOSIsIAoiQzAxOSIsIAoiQzAyMCIsIAoiQzAyMSIsCiJDMDIyIiwgCiJDMDIzIiwgCiJDMDI0IiwgCiJDMDI4IiwgCiJDMDI5IiwKIkMwMzAiLAoiQzAzMSIsCiJDMDM5IiwgCiJDMDQwIiwgCiJDMDQxIiwgCiJDMDQ4IiwKIkMwNDkiLCAKIkMwNTAiLCAKIkMwNTEiLCAKIkMwNTIiLCAKIkMwNTgiLCAKIkMwNTkiLAoiQzA2MCIsIAoiQzA2MSIsIAoiQzA2MiIsIAoiQzA2OCIsIAoiQzA2OSIsIAoiQzA3OSIsICAKIkMwOTgiLAoiQzA5OSIsCiJDMTExIiwKIkMxNDIiLAoiQzMwMCIsCiJDMzc5IiwKIkM0MjAiLAoiQzQyMiIsCiJDNDI0IiwKCiNza2luL21lbGFub21hCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDNDQwIiwgIkM0NDEiLCAiQzQ0MiIsICJDNDQzIiwgIkM0NDQiLCAiQzQ0NSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDNDQ2IiwgIkM0NDciLCAiQzQ0OCIsICJDNDQ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNicmVhc3QgLSBuaXBwbGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkM1MDAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3ZhZ2luYS92dWx2YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQzUxMCIsICJDNTExIiwgIkM1MTIiLCAiQzUxOCIsICJDNTE5IiwgIkM1MjkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3BlbmlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDNjAwIiwgIkM2MDEiLCAiQzYwMiIsICJDNjA4IiwgIkM2MDkiLCAiQzYzOSIsCgoiQzc3MCIsCiJDNzcxIiwKIkM3NzIiLAoiQzc3MyIsCiJDNzc0IiwKIkM3NzUiLAoiQzc3OCIsCiJDNzc5IiksCgpTSVRFX1RFWFQgPSBjKAoiQzAwLjAgRXh0ZXJuYWwgTGlwOiBVcHBlciBOT1MiLAoiQzAwLjEgRXh0ZXJuYWwgTGlwOiBMb3dlciBOT1MiLAoiQzAwLjIgRXh0ZXJuYWwgTGlwOiBOT1MiLAoiQzAwLjMgTGlwOiBVcHBlciBNdWNvc2EiLAoiQzAwLjQgTGlwOiBMb3dlciBNdWNvc2EiLAoiQzAwLjUgTGlwOiBNdWNvc2EgTk9TIiwKIkMwMC42IExpcDogQ29tbWlzc3VyZSIsCiJDMDAuOCBMaXA6IE92ZXJsYXBwaW5nIiwKIkMwMC45IExpcCBOT1MiLAoiQzAxLjkgVG9uZ3VlOiBCYXNlIE5PUyIsCiJDMDIuMCBUb25ndWU6IERvcnNhbCBOT1MiLAoiQzAyLjEgVG9uZ3VlOiBCb3JkZXIsIFRpcCIsCiJDMDIuMiBUb25ndWU6IFZlbnRyYWwgTk9TIiwKIkMwMi4zIFRvbmd1ZTogQW50ZXJpb3IgTk9TIiwKIkMwMi40IExpbmd1YWwgVG9uc2lsIiwKIkMwMi44IFRvbmd1ZTogT3ZlcmxhcHBpbmciLAoiQzAyLjkgVG9uZ3VlOiBOT1MiLAoiQzAzLjAgR3VtOiBVcHBlciIsCiJDMDMuMSBHdW06IExvd2VyIiwKIkMwMy45IEd1bSBOT1MiLAoiQzA0LjAgTW91dGg6IEFudGVyaW9yIEZsb29yIiwKIkMwNC4xIE1vdXRoOiBMYXRlcmFsIEZsb29yIiwKIkMwNC44IE1vdXRoOiBPdmVybGFwcGluZyBGbG9vciIsCiJDMDQuOSBGbG9vciBvZiBNb3V0aCBOT1MiLAoiQzA1LjAgSGFyZCBQYWxhdGUiLAoiQzA1LjEgU29mdCBQYWxhdGUgTk9TIiwKIkMwNS4yIFV2dWxhIiwKIkMwNS44IFBhbGF0ZTogT3ZlcmxhcHBpbmciLAoiQzA1LjkgUGFsYXRlIE5PUyIsCiJDMDYuMCBDaGVlayBNdWNvc2EiLAoiQzA2LjEgTW91dGg6IFZlc3RpYnVsZSIsCiJDMDYuMiBSZXRyb21vbGFyIEFyZWEiLAoiQzA2LjggTW91dGg6IE90aGVyIE92ZXJsYXBwaW5nIiwKIkMwNi45IE1vdXRoIE5PUyIsCiJDMDcuOSBQYXJvdGlkIEdsYW5kIiwKICAiQzA5LjggVG9uc2lsOiBPdmVybGFwcGluZyIsCiAgIkMwOS45IFRvbnNpbCBOT1MiLAogICJDMTEuMSBOYXNvcGhhcnlueDogUG9zdGVyIFdhbGwiLCAKICAiQzE0LjIgV2FsZGV5ZXIgUmluZyIsCiAgIkMzMC4wIE5hc2FsIENhdml0eSIsCiAgIkMzNy45IFRoeW11cyIsCiJDNDIuMCBCbG9vZCIsCiAgIkM0Mi4yIFNwbGVlbiIsCiJDNDIuNCBIZW1hdG9wb2lldGljIE5PUyIsCgogI3NraW4KIkM0NC4wIFNraW4gb2YgbGlwLCBOT1MiLAoiQzQ0LjEgRXllbGlkIiwKIkM0NC4yIEV4dGVybmFsIGVhciIsCiJDNDQuMyBTa2luIG9mIGVhciBhbmQgdW5zcGVjaWZpZWQgcGFydHMgb2YgZmFjZSIsCiJDNDQuNCBTa2luIG9mIHNjYWxwIGFuZCBuZWNrIiwKIkM0NC41IFNraW4gb2YgdHJ1bmsiLAoiQzQ0LjYgU2tpbiBvZiB1cHBlciBsaW1iIGFuZCBzaG91bGRlciIsCiJDNDQuNyBTa2luIG9mIGxvd2VyIGxpbWIgYW5kIGhpcCIsCiJDNDQuOCBPdmVybGFwcGluZyBsZXNpb24gb2Ygc2tpbiIsCiJDNDQuOSBTa2luLCBOT1MiLCAKCiNicmVhc3QKIkM1MC4wIE5pcHBsZSIsCgojdnVsdmEvdmFnaW5hCiJDNTEuMCBMYWJpdW0gbWFqdXMiLAoiQzUxLjEgTGFiaXVtIG1pbnVzIiwKIkM1MS4yIENsaXRvcmlzIiwKIkM1MS44IE92ZXJsYXBwaW5nIGxlc2lvbiBvZiB2dWx2YSIsCiJDNTEuOSBWdWx2YSwgTk9TIiwKIkM1Mi45IFZhZ2luYSwgTk9TIiwKCiNwZW5pcwoiQzYwLjAgUHJlcHVjZSIsCiJDNjAuMSBHbGFucyBwZW5pcyIsCiJDNjAuMiBCb2R5IG9mIHBlbmlzIiwKIkM2MC44IE92ZXJsYXBwaW5nIGxlc2lvbiBvZiBwZW5pcyIsCiJDNjAuOSBQZW5pcyIsCiJDNjMuMiBTY3JvdHVtLCBOT1MiLAoKICAiQzc3LjAgTHltcGggTm9kZXM6IEhlYWRGYWNlTmVjayIsCiAgIkM3Ny4xIEludHJhdGhvcmFjaWMgTHltcGggTm9kZXMiLAogICJDNzcuMiBJbnRyYS1hYmRvbWluYWwgTHltcGhOb2RlcyIsCiAgIkM3Ny4zIEx5bXBoIE5vZGVzIG9mIGF4aWxsYSBvciBhcm0gIiwKICAiQzc3LjQgTHltcGggTm9kZXM6IExlZyIsCiAgIkM3Ny41IFBlbHZpYyBMeW1waCBOb2RlcyIsCiAgIkM3Ny44IEx5bXBoIE5vZGVzOiBtdWx0aXBsZSByZWdpb24iLAogICJDNzcuOSBMeW1waCBOb2RlIE5PUyIpKQoKCmRhdCA8LSBtZXJnZShkYXQsIHByaW1fc2l0ZV90ZXh0LCBieSA9ICJQUklNQVJZX1NJVEUiLCBhbGwueCA9IFRSVUUpIAoKcm0ocHJpbV9zaXRlX3RleHQpCgojIGNvbnZlcnQgbnVtZXJpYyB2YXJpYWJsZXMgZnJvbSBjaGFyYWN0ZXIgY2xhc3MgdG8gbnVtZXJpYyBjbGFzcwpudW1fdmFycyA8LSBjKCJBR0UiLCAiQ1JPV0ZMWSIsICJUVU1PUl9TSVpFIiwgIkRYX1NUQUdJTkdfUFJPQ19EQVlTIiwgIkRYX1JYX1NUQVJURURfREFZUyIsICJEWF9TVVJHX1NUQVJURURfREFZUyIsCiAgICAgICAgICAgICAgIkRYX0RFRlNVUkdfU1RBUlRFRF9EQVlTIiwgIlNVUkdfRElTQ0hBUkdFX0RBWVMiLCAiRFhfUkFEX1NUQVJURURfREFZUyIsICAiUkFEX1JFR0lPTkFMX0RPU0VfQ0dZIiwKICAgICAgICAgICAgICAiUkFEX0JPT1NUX0RPU0VfQ0dZIiwgIlJBRF9FTEFQU0VEX1JYX0RBWVMiLCAiRFhfU1lTVEVNSUNfU1RBUlRFRF9EQVlTIiwgIkRYX0NIRU1PX1NUQVJURURfREFZUyIsIAogICAgICAgICAgICAgICJEWF9IT1JNT05FX1NUQVJURURfREFZUyIsICJEWF9PVEhFUl9TVEFSVEVEX0RBWVMiLCAiRFhfTEFTVENPTlRBQ1RfREVBVEhfTU9OVEhTIiwKICAgICAgICAgICAgICAiUkFEX05VTV9UUkVBVF9WT0wiKQoKZGF0W251bV92YXJzXSA8LSBsYXBwbHkoZGF0W251bV92YXJzXSwgYXMubnVtZXJpYykKCgojIGNvbnZlcnQgZmFjdG9yIHZhcmlhYmxlcyBmcm9tIGNoYXJhY3RlciBjbGFzcyB0byBmYWN0b3IgY2xhc3MKdmFycyA8LSBuYW1lcyhkYXQpCmZhY3RfdmFycyA8LSB2YXJzWyEodmFycyAlaW4lIG51bV92YXJzKV0gIyBiYXNpY2FsbHkgYWxsIG9mIHRoZSBub24tbnVtZXJpY3MKCmRhdFtmYWN0X3ZhcnNdIDwtIGxhcHBseShkYXRbZmFjdF92YXJzXSwgYXMuY2hhcmFjdGVyKQpkYXRbZmFjdF92YXJzXSA8LSBsYXBwbHkoZGF0W2ZhY3RfdmFyc10sIGFzLmZhY3RvcikKCmRhdCA8LSBkYXQgJT4lCiAgICAgICAgbXV0YXRlKEZBQ0lMSVRZX1RZUEVfRiA9IGZjdF9yZWNvZGUoRkFDSUxJVFlfVFlQRV9DRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29tbXVuaXR5IENhbmNlciBQcm9ncmFtIiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29tcHJlaGVuc2l2ZSBDb21tIENhIFByb2dyYW0iID0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBY2FkZW1pYy9SZXNlYXJjaCBQcm9ncmFtIiA9ICIzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW50ZWdyYXRlZCBOZXR3b3JrIENhIFByb2dyYW0iID0gIjQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPdGhlciIgPSAiOSIpKSAlPiUKICAgICAgICBtdXRhdGUoRkFDSUxJVFlfTE9DQVRJT05fRiA9IGZjdF9yZWNvZGUoRkFDSUxJVFlfTE9DQVRJT05fQ0QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5ldyBFbmdsYW5kIiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWlkZGxlIEF0bGFudGljIiA9ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU291dGggQXRsYW50aWMiID0gIjMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFYXN0IE5vcnRoIENlbnRyYWwiID0gIjQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFYXN0IFNvdXRoIENlbnRyYWwiID0gIjUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXZXN0IE5vcnRoIENlbnRyYWwiID0gIjYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXZXN0IFNvdXRoIENlbnRyYWwiID0gIjciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3VudGFpbiIgPSAiOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBhY2lmaWMiID0gIjkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvdXQgb2YgVVMiID0gIjAiKSkgJT4lCiAgICAgICAgbXV0YXRlKEZBQ0lMSVRZX0dFT0dSQVBIWSA9IGZjdF9jb2xsYXBzZShGQUNJTElUWV9MT0NBVElPTl9DRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb3J0aGVhc3QiID0gYygiMSIsICIyIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU291dGgiID0gYygiMyIsICI3IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWlkd2VzdCIgPSBjKCI0IiwgIjUiLCAiNiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldlc3QiID0gYygiOCIsICI5IikpKSAlPiUKICAgICAgICBtdXRhdGUoQUdFX0YgPSBjdXQoQUdFLCBjKDAsIDU0LCA2NCwgNzQsIDEwMCkpKSAlPiUKICAgICAgICBtdXRhdGUoQUdFXzQwID0gY3V0KEFHRSwgYygwLCA0MCwgMTAwKSkpICU+JQogICAgICAgIG11dGF0ZShTRVhfRiA9IGZjdF9yZWNvZGUoU0VYLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNYWxlIiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmVtYWxlIiA9ICIyIikpICU+JQogICAgICAgIG11dGF0ZShSQUNFX0YgPSBmY3RfY29sbGFwc2UoUkFDRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV2hpdGUiID0gYygiMDEiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQmxhY2siID0gYygiMDIiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQXNpYW4iID0gYygiMDQiLCAiMDUiLCAiMDYiLCAiMDciLCAiMDgiLCAiMTAiLCAiMTEiLCAiMTIiLCAiMTMiLCAiMTQiLCAiMTUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxNiIsICIxNyIsICIyMCIsICIyMSIsICIyMiIsICIyNSIsICIyNiIsICIyNyIsICIyOCIsICIzMCIsICIzMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjMyIiwgIjk2IiwgIjk3IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk90aGVyL1VuayIgPSBjKCIwMyIsICI5OCIsICI5OSIpKSkgJT4lCiAgICAgICAgbXV0YXRlKEhJU1BBTklDID0gZmN0X2NvbGxhcHNlKFNQQU5JU0hfSElTUEFOSUNfT1JJR0lOLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWWVzIiA9IGMoIjEiLCAiMiIsICIzIiwgIjQiLCAiNSIsICI2IiwgIjciLCAiOCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8iID0gYygiMCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biIgPSBjKCI5IikpKSAlPiUKICAgICAgICBtdXRhdGUoSU5TVVJBTkNFX0YgPSBmY3RfcmVjb2RlKElOU1VSQU5DRV9TVEFUVVMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vbmUiID0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQcml2YXRlIiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWVkaWNhaWQiID0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNZWRpY2FyZSIgPSAiMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk90aGVyIEdvdmVybm1lbnQiID0gIjQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmtub3duIiA9ICI5IikpICU+JQogICAgICAgIG11dGF0ZShJTlNVUkFOQ0VfRiA9IGZjdF9yZWxldmVsKElOU1VSQU5DRV9GLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQcml2YXRlIikpICU+JQogICAgICAgIG11dGF0ZShJTkNPTUVfRiA9IGZjdF9yZWNvZGUoTUVEX0lOQ19RVUFSXzEyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMZXNzIHRoYW4gJDM4LDAwMCIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiQzOCwwMDAgLSAkNDcsOTk5IiA9ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJDQ4LDAwMCAtICQ2Miw5OTkiID0gIjMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIkNjMsMDAwICsiID0gIjQiKSkgJT4lCiAgICAgICAgbXV0YXRlKEVEVUNBVElPTl9GID0gZmN0X3JlY29kZShOT19IU0RfUVVBUl8xMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIyMSUgb3IgbW9yZSIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMTMgLSAyMC45JSIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiNyAtIDEyLjklIiA9ICIzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMZXNzIHRoYW4gNyUiID0gIjQiKSkgJT4lCiAgICAgICAgbXV0YXRlKFVfUl9GID0gZmN0X2NvbGxhcHNlKFVSX0NEXzEzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWV0cm8iID0gYygiMSIsICIyIiwgIjMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVyYmFuIiA9IGMoIjQiLCAiNSIsICI2IiwgIjciKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJ1cmFsIiA9IGMoIjgiLCAiOSIpKSkgJT4lCiAgICAgICAgbXV0YXRlKENMQVNTX09GX0NBU0VfRiA9IGZjdF9jb2xsYXBzZShDTEFTU19PRl9DQVNFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsX1BhcnRfUHJpbSA9IGMoIjEwIiwgIjExIiwgIjEyIiwgIjEzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxNCIsICIyMCIsICIyMSIsICIyMiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3RoZXJfRmFjaWxpdHkgPSBjKCIwMCIpKSkgJT4lCiAgICAgICAgbXV0YXRlKEdSQURFX0YgPSBmY3RfcmVjb2RlKEdSQURFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdyIEk6IFdlbGwgRGlmZiIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR3IgSUk6IE1vZCBEaWZmIiA9ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHciBJSUk6IFBvb3IgRGlmZiIgPSAiMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR3IgSVY6IFVuZGlmZi9BbmFwbGFzdGljIiA9ICI0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOQS9Vbmtvd24iID0gIjkiKSkgJT4lCiAgICAgICAgbXV0YXRlKEhJU1RPTE9HWV9GID0gZmN0X2luZnJlcShISVNUT0xPR1kpKSAlPiUKICAgICAgICBtdXRhdGUoSElTVE9MT0dZX0YgPSBmYWN0b3IoSElTVE9MT0dZX0YpKSAlPiUKICAgICAgICBtdXRhdGUoSElTVE9MT0dZX0ZfTElNID0gZmN0X2x1bXAoSElTVE9MT0dZX0YsIHByb3AgPSAwLjA1KSkgJT4lCiAgICAgICAgbXV0YXRlKFROTV9DTElOX1QgPSBmY3RfcmVjb2RlKFROTV9DTElOX1QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOX0EiID0gIjg4IikpICU+JQogICAgICAgIG11dGF0ZShUTk1fQ0xJTl9UID0gZmN0X3JlbGV2ZWwoVE5NX0NMSU5fVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxIikpICU+JQogICAgICAgIG11dGF0ZShUTk1fQ0xJTl9OID0gZmN0X3JlY29kZShUTk1fQ0xJTl9OLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTl9BIiA9ICI4OCIpKSAlPiUKICAgICAgICBtdXRhdGUoVE5NX0NMSU5fTSA9IGZjdF9yZWNvZGUoVE5NX0NMSU5fTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5fQSIgPSAiODgiKSkgJT4lCiAgICAgICAgbXV0YXRlKFROTV9QQVRIX1QgPSBmY3RfcmVjb2RlKFROTV9QQVRIX1QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOX0EiID0gIjg4IikpICU+JQogICAgICAgIG11dGF0ZShUTk1fUEFUSF9UID0gZmN0X3JlbGV2ZWwoVE5NX1BBVEhfVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxIikpICU+JQogICAgICAgIG11dGF0ZShUTk1fUEFUSF9OID0gZmN0X3JlY29kZShUTk1fUEFUSF9OLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTl9BIiA9ICI4OCIpKSAlPiUKICAgICAgICBtdXRhdGUoVE5NX1BBVEhfTSA9IGZjdF9yZWNvZGUoVE5NX1BBVEhfTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5fQSIgPSAiODgiKSkgJT4lCiAgICAgICAgbXV0YXRlKFROTV9DTElOX1NUQUdFX0dST1VQID0gZmN0X3JlY29kZShUTk1fQ0xJTl9TVEFHRV9HUk9VUCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5fQSIgPSAiODgiKSkgJT4lCiAgICAgICAgbXV0YXRlKFROTV9QQVRIX1NUQUdFX0dST1VQID0gZmN0X3JlY29kZShUTk1fUEFUSF9TVEFHRV9HUk9VUCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5fQSIgPSAiODgiKSkgJT4lCiAgICAgICAgbXV0YXRlKE1BUkdJTlMgPSBmY3RfcmVjb2RlKFJYX1NVTU1fU1VSR0lDQUxfTUFSR0lOUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIFJlc2lkdWFsIiA9ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJlc2lkdWFsLCBOT1MiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWljcm9zY29waWMgUmVzaWQiID0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWFjcm9zY29waWMgUmVzaWQiID0gIjMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm90IGV2YWx1YWJsZSIgPSAiNyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyBzdXJnIiA9ICI4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24iID0gIjkiKSkgJT4lCiAgICAgICAgbXV0YXRlKE1BUkdJTlNfWU4gPSBmY3RfY29sbGFwc2UoUlhfU1VNTV9TVVJHSUNBTF9NQVJHSU5TLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZZXMiID0gYygiMSIsICIyIiwgIjMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8iID0gYygiMCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyBzdXJnL1Vuay9OQSIgPSBjKCI3IiwgIjgiLCAiOSIpKSkgJT4lCiAgICAgICAgbXV0YXRlKFJFQURNX0hPU1BfMzBfREFZU19GID0gZmN0X3JlY29kZShSRUFETV9IT1NQXzMwX0RBWVMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm9fU3VyZ19vcl9Ob19SZWFkbWl0IiA9ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbnBsYW5fUmVhZG1pdF9TYW1lIiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQbGFuX1JlYWRtaXRfU2FtZSIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGxhblVucGxhbl9TYW1lIiA9ICIzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmtub3duIiA9ICI0IikpICU+JQogICAgICAgIG11dGF0ZShSWF9TVU1NX1JBRElBVElPTl9GID0gZmN0X3JlY29kZShSWF9TVU1NX1JBRElBVElPTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vbmUiID0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQmVhbSBSYWRpYXRpb24iID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkaW9hY3RpdmUgSW1wbGFudHMiID0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkaW9pc290b3BlcyIgPSAiMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCZWFtICsgSW1wIG9yIElzb3RvcGVzIiA9ICI0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZGlhdGlvbiwgTk9TIiA9ICI1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24iID0gIjkiKSkgJT4lCiAgICAgICAgbXV0YXRlKFBVRl8zMF9EQVlfTU9SVF9DRF9GID0gZmN0X3JlY29kZShQVUZfMzBfREFZX01PUlRfQ0QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWxpdmVfMzAiID0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRlYWRfMzAiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24iID0gIjkiKSkgJT4lCiAgICAgICAgbXV0YXRlKFBVRl85MF9EQVlfTU9SVF9DRF9GID0gZmN0X3JlY29kZShQVUZfOTBfREFZX01PUlRfQ0QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWxpdmVfOTAiID0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRlYWRfOTAiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24iID0gIjkiKSkgJT4lCiAgICAgICAgbXV0YXRlKExZTVBIX1ZBU0NVTEFSX0lOVkFTSU9OX0YgPSBmY3RfcmVjb2RlKExZTVBIX1ZBU0NVTEFSX0lOVkFTSU9OLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTmVnX0x5bXBoVmFzY19JbnYiID0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUG9zX0x1bXBoVmFzY19JbnYiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTl9BIiA9ICI4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24iID0gIjkiKSkgJT4lCiAgICAgICAgbXV0YXRlKFJYX0hPU1BfU1VSR19BUFBSXzIwMTBfRiA9IGZjdF9yZWNvZGUoUlhfSE9TUF9TVVJHX0FQUFJfMjAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm9fU3VyZyIgPSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJvYm90X0Fzc2lzdCIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJvYm90X3RvX09wZW4iID0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFbmRvX0xhcCIgPSAiMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVuZG9fTGFwX3RvX09wZW4iID0gIjQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPcGVuX1Vua25vd24iID0gIjUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmtub3duIiA9ICI5IikpICU+JQogICAgICAgIG11dGF0ZShBbGwgPSAiQWxsIikgJT4lCiAgICAgICAgbXV0YXRlKEFsbCA9IGZhY3RvcihBbGwpKSAlPiUKICAgICAgICBtdXRhdGUoUkVBU09OX0ZPUl9OT19TVVJHRVJZX0YgPSBmY3RfcmVjb2RlKFJFQVNPTl9GT1JfTk9fU1VSR0VSWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXJnIHBlcmZvcm1lZCIgPSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VyZyBub3QgcmVjb21tZW5kZWQiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIHN1cmcgZHVlIHRvIHB0IGZhY3RvcnMiID0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIHN1cmcsIHB0IGRpZWQiID0gIjUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cmcgcmVjLCBub3QgZG9uZSIgPSAiNiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VyZyByZWMsIHB0IHJlZnVzZWQiID0gIjciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cmcgcmVjLCB1bmsgaWYgZG9uZSIgPSAiOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biIgPSAiOSIpKSAlPiUKICAgICAgICBtdXRhdGUoU1VSR0VSWV9ZTiA9IGlmZWxzZShSRUFTT05fRk9SX05PX1NVUkdFUlkgPT0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSRUFTT05fRk9SX05PX1NVUkdFUlkgPT0gIjkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVWtuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIikpKSAlPiUKICAgICAgICBtdXRhdGUoU1VSR19URiA9IGNhc2Vfd2hlbihTVVJHRVJZX1lOID09ICJZZXMiIH4gVFJVRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVVJHRVJZX1lOID09ICJObyIgfiBGQUxTRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFIH4gTkEpKSAgJT4lCiAgICAgICAgbXV0YXRlKFJFQVNPTl9GT1JfTk9fUkFESUFUSU9OX0YgPSBmY3RfcmVjb2RlKFJFQVNPTl9GT1JfTk9fUkFESUFUSU9OLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCBwZXJmb3JtZWQiID0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCBub3QgcmVjb21tZW5kZWQiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIFJhZCBkdWUgdG8gcHQgZmFjdG9ycyIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gUmFkLCBwdCBkaWVkIiA9ICI1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgcmVjLCBub3QgZG9uZSIgPSAiNiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIHJlYywgcHQgcmVmdXNlZCIgPSAiNyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIHJlYywgdW5rIGlmIGRvbmUiID0gIjgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24iID0gIjkiKSkgJT4lCiAgICAgICAgbXV0YXRlKFJBRElBVElPTl9ZTiA9IGlmZWxzZShSRUFTT05fRk9SX05PX1JBRElBVElPTiA9PSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlllcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFJFQVNPTl9GT1JfTk9fUkFESUFUSU9OID09ICI5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyIpKSkgJT4lCiAgICAgICAgbXV0YXRlKFNVUkdSQURfU0VRX0YgPSBmY3RfcmVjb2RlKFJYX1NVTU1fU1VSR1JBRF9TRVEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb25lIG9yIFN1cmcgb3IgUmFkIiA9ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCBiZWZvcmUgU3VyZyIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXJnIGJlZm9yZSBSYWQiID0gIjMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIGJlZm9yZSBhbmQgYWZ0ZXIgU3VyZyIgPSAiNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnRyYW9wIFJhZCIgPSAiNSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnRyYW9wIFJhZCBwbHVzIG90aGVyIiA9ICI2IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24iID0gIjkiKSkgJT4lCiAgICAgICAgbXV0YXRlKFNVUkdfUkFEX1NFUSA9IGlmZWxzZShTVVJHRVJZX1lOID09ICJZZXMiICYgUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VyZyBBbG9uZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoUkFESUFUSU9OX1lOID09ICJZZXMiICYgUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCBBbG9uZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFNVUkdFUllfWU4gPT0gIk5vIiAmIFJBRElBVElPTl9ZTiA9PSAiTm8iICYgUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyBUcmVhdG1lbnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIHRoZW4gU3VyZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cmcgdGhlbiBSYWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSWF9TVU1NX1NVUkdSQURfU0VRID09ICI0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCBiZWZvcmUgYW5kIGFmdGVyIFN1cmciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3RoZXIiKSkpKSkpKSAlPiUKICAgICAgICBtdXRhdGUoU1VSR19SQURfU0VRID0gZmN0X3JlbGV2ZWwoU1VSR19SQURfU0VRLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VyZyBBbG9uZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXJnIHRoZW4gUmFkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCBBbG9uZSIpKSAlPiUKICAgICAgICBtdXRhdGUoQ0hFTU9fWU4gPSBmY3RfY29sbGFwc2UoUlhfU1VNTV9DSEVNTywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIiA9IGMoIjAwIiwgIjgyIiwgIjg1IiwgIjg2IiwgIjg3IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZZXMiID0gYygiMDEiLCAiMDIiLCAiMDMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVrbiIgPSBjKCI4OCIsICI5OSIpKSkgJT4lCiAgICAgICAgbXV0YXRlKElNTVVOT19ZTiA9IGZjdF9jb2xsYXBzZShSWF9TVU1NX0lNTVVOT1RIRVJBUFksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyIgPSBjKCIwMCIsICI4MiIsICI4NSIsICI4NiIsICI4NyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWWVzIiA9IGMoIjAxIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVa24iID0gYygiODgiLCAiOTkiKSkpICU+JQogICAgICAgIG11dGF0ZShTVVJHX1JBRF9TRVFfQyA9IGlmZWxzZShTVVJHRVJZX1lOID09ICJZZXMiICYgUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMCIgJiBDSEVNT19ZTiA9PSAiTm8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cmcsIE5vIHJhZCwgTm8gQ2hlbW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFJBRElBVElPTl9ZTiA9PSAiWWVzIiAmIFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjAiICYgQ0hFTU9fWU4gPT0gIk5vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkLCBObyBTdXJnLCBObyBDaGVtbyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFNVUkdFUllfWU4gPT0gIk5vIiAmIFJBRElBVElPTl9ZTiA9PSAiTm8iICYgUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMCIgJiBDSEVNT19ZTiA9PSAiTm8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gU3VyZywgTm8gUmFkLCBObyBDaGVtbyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSWF9TVU1NX1NVUkdSQURfU0VRID09ICIyIiAmIENIRU1PX1lOID09ICJObyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIHRoZW4gU3VyZywgTm8gQ2hlbW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjMiICYgQ0hFTU9fWU4gPT0gIk5vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VyZyB0aGVuIFJhZCwgTm8gQ2hlbW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSWF9TVU1NX1NVUkdSQURfU0VRID09ICI0IiAmIENIRU1PX1lOID09ICJObyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgYmVmb3JlIGFuZCBhZnRlciBTdXJnLCBObyBDaGVtbyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFNVUkdFUllfWU4gPT0gIlllcyIgJiBSWF9TVU1NX1NVUkdSQURfU0VRID09ICIwIiAmIENIRU1PX1lOID09ICJZZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VyZywgTm8gcmFkLCBZZXMgQ2hlbW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoUkFESUFUSU9OX1lOID09ICJZZXMiICYgUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMCIgJiBDSEVNT19ZTiA9PSAiWWVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQsIE5vIFN1cmcsIFllcyBDaGVtbyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoU1VSR0VSWV9ZTiA9PSAiTm8iICYgUkFESUFUSU9OX1lOID09ICJObyIgJiBSWF9TVU1NX1NVUkdSQURfU0VRID09ICIwIiAmIENIRU1PX1lOID09ICJZZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyBTdXJnLCBObyBSYWQsIFllcyBDaGVtbyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjIiICYgQ0hFTU9fWU4gPT0gIlllcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgdGhlbiBTdXJnLCBZZXMgQ2hlbW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMyIgJiBDSEVNT19ZTiA9PSAiWWVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXJnIHRoZW4gUmFkLCBZZXMgQ2hlbW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjQiICYgQ0hFTU9fWU4gPT0gIlllcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCBiZWZvcmUgYW5kIGFmdGVyIFN1cmcsIFllcyBDaGVtbyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk90aGVyIikpKSkpKSkpKSkpKSkgJT4lCiAgICAgICAgbXV0YXRlKFNVUkdfUkFEX1NFUV9DID0gZmN0X2luZnJlcShTVVJHX1JBRF9TRVFfQykpICU+JQogICAgICAgIG11dGF0ZShUX1NJWkUgPSBhcy5udW1lcmljKFRVTU9SX1NJWkUpKSAlPiUKICAgICAgICBtdXRhdGUoVF9TSVpFID0gaWZlbHNlKFRfU0laRSA9PSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyBUdW1vciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFRfU0laRSA+IDAgJiBUX1NJWkUgPCAxMCB8IFRfU0laRSA9PSA5OTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8IDEgY20iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoVF9TSVpFID49IDEwICYgVF9TSVpFIDwgMjAgfCBUX1NJWkUgPT0gOTkyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjEtMiBjbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoVF9TSVpFID49IDIwICYgVF9TSVpFIDwgMzAgfCBUX1NJWkUgPT0gOTkzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIyLTMgY20iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShUX1NJWkUgPj0gMzAgJiBUX1NJWkUgPCA0MCB8IFRfU0laRSA9PSA5OTQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIzLTQgY20iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoVF9TSVpFID49IDQwICYgVF9TSVpFIDwgNTAgfCBUX1NJWkUgPT0gOTk1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjQtNSBjbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoVF9TSVpFID49IDUwICYgVF9TSVpFIDwgNjAgfCBUX1NJWkUgPT0gOTk2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI1LTYgY20iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShUX1NJWkUgPj0gNjAgJiBUX1NJWkUgPD0gOTg3IHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUX1NJWkUgPT0gOTgwIHwgVF9TSVpFID09IDk4OSB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVF9TSVpFID09IDk5NywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPjYgY20iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShUX1NJWkUgPT0gOTg4IHwgVF9TSVpFID09IDk5OSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5BX3VuayIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNaWNyb3Njb3BpYyBmb2N1cyIpKSkpKSkpKSkpICU+JQogICAgICAgIG11dGF0ZShUX1NJWkUgPSBmYWN0b3IoVF9TSVpFKSkgJT4lCiAgICAgICAgbXV0YXRlKFRfU0laRSA9IGZjdF9yZWxldmVsKFRfU0laRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyBUdW1vciIsICJNaWNyb3Njb3BpYyBmb2N1cyIsICI8IDEgY20iLCAiMS0yIGNtIiwgIjItMyBjbSIsICIzLTQgY20iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiNC01IGNtIiwgIjUtNiBjbSIsICI+NiBjbSIsICJOQV91bmsiKSkgJT4lCiAgICAgICAgbXV0YXRlKG1ldHNfYXRfZHggPSBjYXNlX3doZW4oQ1NfTUVUU19EWF9MVU5HID09ICIxIiB+ICJMdW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU19NRVRTX0RYX0JPTkUgPT0gIjEiIH4gIkJvbmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTX01FVFNfRFhfQlJBSU4gPT0gIjEiIH4gIkJyYWluIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU19NRVRTX0RYX0xJVkVSID09ICIxIiB+ICJMaXZlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSB+ICJOb25lL090aGVyL1Vuay9OQSIpKSAlPiUKICAgICAgICBtdXRhdGUoTUVESUNBSURfRVhQTl9DT0RFID0gZmN0X3JlY29kZShNRURJQ0FJRF9FWFBOX0NPREUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vbi1FeHBhbnNpb24gU3RhdGUiID0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJKYW4gMjAxNCBFeHBhbnNpb24gU3RhdGVzIiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRWFybHkgRXhwYW5zaW9uIFN0YXRlcyAoMjAxMC0xMykiID0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMYXRlIEV4cGFuc2lvbiBTdGF0ZXMgKD4gSmFuIDIwMTQpIiA9ICIzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VwcHJlc3NlZCBmb3IgQWdlcyAwIC0gMzkiID0gIjkiKSkgICU+JQogICAgICAgIG11dGF0ZShFWFBOX0dST1VQID0gIGNhc2Vfd2hlbihNRURJQ0FJRF9FWFBOX0NPREUgICVpbiUgYygiSmFuIDIwMTQgRXhwYW5zaW9uIFN0YXRlcyIpICYgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWUVBUl9PRl9ESUFHTk9TSVMgJWluJSBjKCIyMDE0IiwgIjIwMTUiKSB+ICJQb3N0LUV4cGFuc2lvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRURJQ0FJRF9FWFBOX0NPREUgICVpbiUgYygiSmFuIDIwMTQgRXhwYW5zaW9uIFN0YXRlcyIpICYgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWUVBUl9PRl9ESUFHTk9TSVMgJWluJSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYygiMjAwNCIsICIyMDA1IiwgIjIwMDYiLCAiMjAwNyIsICIyMDA4IiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjIwMDkiLCAiMjAxMCIsICIyMDExIiwgIjIwMTIiLCAiMjAxMyIpIH4gIlByZS1FeHBhbnNpb24iLAogICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVESUNBSURfRVhQTl9DT0RFICAlaW4lIGMoIkVhcmx5IEV4cGFuc2lvbiBTdGF0ZXMgKDIwMTAtMTMpIikgJiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZRUFSX09GX0RJQUdOT1NJUyAlaW4lIGMoIjIwMTAiLCAiMjAxMSIsICIyMDEyIiwgIjIwMTMiLCAiMjAxNCIsICIyMDE1IikgfiAiUG9zdC1FeHBhbnNpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FRElDQUlEX0VYUE5fQ09ERSAgJWluJSBjKCJFYXJseSBFeHBhbnNpb24gU3RhdGVzICgyMDEwLTEzKSIpICYgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWUVBUl9PRl9ESUFHTk9TSVMgJWluJSBjKCIyMDA0IiwgIjIwMDUiLCAiMjAwNiIsICIyMDA3IiwgIjIwMDgiLCAiMjAwOSIpIH4gIlByZS1FeHBhbnNpb24iLAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVESUNBSURfRVhQTl9DT0RFICVpbiUgYygiTm9uLUV4cGFuc2lvbiBTdGF0ZSIpIH4gIlByZS1FeHBhbnNpb24iLAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVESUNBSURfRVhQTl9DT0RFICVpbiUgYygiTGF0ZSBFeHBhbnNpb24gU3RhdGVzICg+IEphbiAyMDE0KSIpIH4gIlByZS1FeHBhbnNpb24iLAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRURJQ0FJRF9FWFBOX0NPREUgJWluJSBjKCJMYXRlIEV4cGFuc2lvbiBTdGF0ZXMgKD4gSmFuIDIwMTQpIikgJiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlFQVJfT0ZfRElBR05PU0lTICVpbiUgYygiMjAxNCIsICIyMDE1IikgfiAiRXhjbHVkZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRURJQ0FJRF9FWFBOX0NPREUgPT0gIlN1cHByZXNzZWQgZm9yIEFnZXMgMCAtIDM5IiB+ICJFeGNsdWRlIikpICU+JQogIAogIG11dGF0ZShwcmVfMjAxNCA9IFlFQVJfT0ZfRElBR05PU0lTICVpbiUgYygiMjAwNCIsICIyMDA1IiwgIjIwMDYiLCAiMjAwNyIsICIyMDA4IiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjIwMDkiLCAiMjAxMCIsICIyMDExIiwgIjIwMTIiLCAiMjAxMyIpKSAlPiUKICAKICBtdXRhdGUobWV0c19hdF9keF9GID0gaWZlbHNlKG1ldHNfYXRfZHggPT0gIk5vbmUvT3RoZXIvVW5rL05BIiwgRkFMU0UsIFRSVUUpKSAlPiUgCiAgCiAgbXV0YXRlKFR4X1lOID0gaWZlbHNlKFNVUkdfUkFEX1NFUSA9PSAiTm8gVHJlYXRtZW50IiAmIENIRU1PX1lOID09ICJObyIgJiAKICAgICAgICAgICAgICAgICAgICAgICAgICBJTU1VTk9fWU4gPT0gIk5vIiwgRkFMU0UsIAogICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoQ0hFTU9fWU4gPT0gIlVrbiIsIE5BLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUpKSkKCmZhY3RfdmFyc18yIDwtIGMoIkZBQ0lMSVRZX1RZUEVfRiIsICJGQUNJTElUWV9MT0NBVElPTl9GIiwgIkFHRV9GIiwgIlNFWF9GIiwgIlJBQ0VfRiIsCiAgICAgICAgICAgICAgICAgIkhJU1BBTklDIiwgIklOU1VSQU5DRV9GIiwgIklOQ09NRV9GIiwgIkVEVUNBVElPTl9GIiwgIlVfUl9GIiwKICAgICAgICAgICAgICAgICAiQ0RDQ19UT1RBTF9CRVNUIiwgIkNMQVNTX09GX0NBU0VfRiIsICJZRUFSX09GX0RJQUdOT1NJUyIsICJQUklNQVJZX1NJVEUiLCAiSElTVE9MT0dZIiwKICAgICAgICAgICAgICAgICAiQkVIQVZJT1IiLCAiR1JBREVfRiIsICJUTk1fQ0xJTl9UIiwgIlROTV9DTElOX04iLCAiVE5NX0NMSU5fTSIsCiAgICAgICAgICAgICAgICAgIlROTV9DTElOX1NUQUdFX0dST1VQIiwgIlROTV9QQVRIX1QiLCAiVE5NX1BBVEhfTiIsICJUTk1fUEFUSF9NIiwgIlROTV9QQVRIX1NUQUdFX0dST1VQIiwKICAgICAgICAgICAgICAgICAiTUFSR0lOUyIsICJSRUFETV9IT1NQXzMwX0RBWVNfRiIsICJSWF9TVU1NX1JBRElBVElPTl9GIiwgIlBVRl8zMF9EQVlfTU9SVF9DRF9GIiwKICAgICAgICAgICAgICAgICAiUFVGXzkwX0RBWV9NT1JUX0NEX0YiLCAiTFlNUEhfVkFTQ1VMQVJfSU5WQVNJT05fRiIsICJSWF9IT1NQX1NVUkdfQVBQUl8yMDEwX0YiLCAibWV0c19hdF9keCIpCgoKZGF0IDwtIGRhdCAlPiUKICAgICAgICBtdXRhdGVfYXQoZmFjdF92YXJzXzIsIGZ1bnMoZmFjdG9yKC4pKSkKCmBgYAoKCiMgRXh0cmFjdCBkYXRhIG9mIGludGVyZXN0IAoKYGBge3J9CiMgRU1QRApzaXRlX2NvZGUgPC0gYygKICAjbGlwICAKICAiQzAwMCIsICJDMDAxIiwgIkMwMDIiLCAiQzAwMyIsICJDMDA0IiwgIkMwMDUiLCJDMDA2IiwgIkMwMDgiLCJDMDA5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKI3NraW4vbWVsYW5vbWEKICAiQzQ0MCIsICJDNDQxIiwgIkM0NDIiLCAiQzQ0MyIsICJDNDQ0IiwgIkM0NDUiLCAiQzQ0NiIsICJDNDQ3IiwgIkM0NDgiLCAiQzQ0OSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKI3ZhZ2luYS92dWx2YQogICJDNTEwIiwgIkM1MTEiLCAiQzUxMiIsICJDNTE4IiwgIkM1MTkiLCAiQzUyOSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAojcGVuaXMKICJDNjAwIiwgIkM2MDEiLCAiQzYwMiIsICJDNjA4IiwgIkM2MDkiLCAiQzYzOSIpCgpoaXN0b19jb2RlIDwtIGMoIjg1NDIiKQpiZWhhdmlvcl9jb2RlIDwtIGMoIjMiKQoKZGF0YSA8LSBkYXQgJT4lCiAgICAgICAgZmlsdGVyKEJFSEFWSU9SICVpbiUgYmVoYXZpb3JfY29kZSkgJT4lCiAgICAgICAgZmlsdGVyKFBSSU1BUllfU0lURSAlaW4lIHNpdGVfY29kZSkgJT4lCiAgICAgICAgZmlsdGVyKEhJU1RPTE9HWSAlaW4lIGhpc3RvX2NvZGUpICU+JQogICAgICAgIGZpbHRlcihpcy5uYShQVUZfVklUQUxfU1RBVFVTKSA9PSBGQUxTRSkgJT4lCiAgICAgICAgZmlsdGVyKGlzLm5hKERYX0xBU1RDT05UQUNUX0RFQVRIX01PTlRIUykgPT0gRkFMU0UpICU+JQogICAgICAgIGZpbHRlcihTRVFVRU5DRV9OVU1CRVIgPT0gIjAwIikgCgpub19FeGNsdWRlcyA8LSBhcy5kYXRhLmZyYW1lKGRhdGEgJT4lIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyKEVYUE5fR1JPVVAgIT0gIkV4Y2x1ZGUiKSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlPiUgZHJvcGxldmVscygpKQpgYGAKCmBgYHtyIHNhdmVsb2FkRGF0YX0KI2ZpbGVfcGF0aCA8LSBjKCIvVXNlcnMvYmVhc3RhdGxpZmUvR29vZ2xlIERyaXZlL1Blbm4vUmVzZWFyY2gvQmFyYmllcmkvTkNEQiIpCiNzYXZlKGRhdGEsCiMgICAgICBmaWxlID0gcGFzdGUwKGZpbGVfcGF0aCwgIi9FTVBEX2RhdGEuUmRhIikpCgojbG9hZCgiRU1QRF9kYXRhLlJkYSIpCmBgYAoKCgoKRGF0YSBpbmNsdWRpbmcgc2tpbiB0dW1vcnMgd2FzIG9idGFpbmVkIGZyb20gdGhlIE5DQkQgb24gT2N0b2JlciA3LCAyMDE5LiBDYXNlcyB0aGF0IHdlcmUgaW5jbHVkZWQgaW4gdGhpcyBhbmFseXNpcyB3ZXJlIHRob3NlIHdpdGg6CgoxLiBTaXRlIGNvZGVzOiBgciBzaXRlX2NvZGVgCjIuIEhpc3RvbG9neSBjb2RlczogYHIgaGlzdG9fY29kZWAKMy4gQmVoYXZpb3IgY29kZXM6IGByIGJlaGF2aW9yX2NvZGVgCgoKUGF0aWVudHMgd2VyZSBleGNsdWRlZCBpZiB0aGV5IGRpZG4ndCBoYXZlIHZhbHVlcyBmb3IgZWl0aGVyIGZvbGxvdyB1cCBvciB2aXRhbCBzdGF0dXMuCgpQYXRpZW50cyB3ZXJlIGV4Y2x1ZGVkIGlmIHRoZXkgaGFkIHN1cmdlcnkgdG8gYSBkaXN0YW50IHNpdGUgdXNpbmcgYFJYX1NVTU1fU1VSR19PVEhfUkVHRElTYC4gVGhpcyB3YXMgZG9uZSB0byBhdm9pZCBjb25mb3VuZGluZyBvZiBkaWZmZXJlbnQgc3VyZ2ljYWwgcHJvY2VkdXJlcy4gV2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiBzdXJnZXJ5IGF0IHRoZSBwcmltYXJ5IHNpdGUuIFRoZXNlIGRpc3RhbnQgc2l0ZSBzdXJnZXJpZXMgd2VyZSBiZWluZyBjb3VudGVkIGluIHRoZSBzdXJnZXJ5L3JhZGlhdGlvbiBzZXF1ZW5jZSBhbmQgdGh1cyB0byBzaW1wbGlmeSBhbmFseXNpcyB0aGV5IHdlcmUgcmVtb3ZlZC4gCgpgYGB7cn0KCmRhdGEgJT4lCiAgICAgICAgQ3JlYXRlVGFibGVPbmUoZGF0YSA9IC4sCiAgICAgICAgICAgICAgICAgICAgIHZhcnMgPSBjKCJSWF9TVU1NX1NVUkdfT1RIX1JFR0RJUyIpLAogICAgICAgICAgICAgICAgICAgICBpbmNsdWRlTkEgPSBUUlVFKSAlPiUKICAgICAgICBwcmludCguLAogICAgICAgICAgICAgIHNob3dBbGxMZXZlbHMgPSBUUlVFKQoKZGF0YSA8LSBkYXRhICU+JQogICAgICAgIGZpbHRlcihSWF9TVU1NX1NVUkdfT1RIX1JFR0RJUyA9PSAiMCIpIApgYGAKCgpSYWNlIHdhcyBncm91cGVkIGFzIHdoaXRlLCBibGFjaywgYXNpYW4sIG90aGVyL3Vua25vd24KU3RhZ2Ugd2FzIGdyb3VwZWQgaW50byAwLCBJLCBJSSwgSUlJLCBJViwgTkFfVW5rbm93biwgc3RhZ2UgMCB3YXMgcmVtb3ZlZApXaGV0aGVyIHN1cmdlcnkgd2FzIHBlcmZvcm1lZCB3YXMgYmFzZWQgb24gdGhlIGBSRUFTT05fRk9SX05PX1NVUkdFUllgIHZhcmlhYmxlLiBUaGUgYFNVUkdFUllfWU5gIHZhcmlhYmxlIHdhcyBjbGFzc2lmaWVkIGFzICdZZXMnLCAnTm8nLCBvciAnVW5rbm93bicuCgoKV2hldGhlciByYWRpYXRpb24gd2FzIHBlcmZvcm1lZCB3YXMgYmFzZWQgb24gdGhlIGBSRUFTT05fRk9SX05PX1JBRElBVElPTmAgdmFyaWFibGUuIFRoZSBgUkFESUFUSU9OX1lOYCB2YXJpYWJsZSB3YXMgY2xhc3NpZmllZCBhcyAnWWVzJywgJ05vJywgb3IgJ1Vua25vd24nLgoKCgogIyNUYWJsZSBvZiB2YXJpYWJsZXMgZm9yIGFsbCBjYXNlczoKCmBgYHtyfQoKcF90YWJsZShkYXRhLAogICAgICAgIHZhcnMgPSBjKCJGQUNJTElUWV9UWVBFX0YiLCAiRkFDSUxJVFlfTE9DQVRJT05fRiIsICJGQUNJTElUWV9HRU9HUkFQSFkiLCAgIkFHRSIsICJBR0VfRiIsICJBR0VfNDAiLAogICAgICAgICAgICAgICAgICJTRVhfRiIsICJSQUNFX0YiLCAiSElTUEFOSUMiLCAiSU5TVVJBTkNFX0YiLCAKICAgICAgICAgICAgICAgICAiSU5DT01FX0YiLCAiRURVQ0FUSU9OX0YiLCAiVV9SX0YiLCAiQ1JPV0ZMWSIsICJDRENDX1RPVEFMX0JFU1QiLAogICAgICAgICAgICAgICAgICJTSVRFX1RFWFQiLCAgIkJFSEFWSU9SIiwgIkdSQURFX0YiLAogICAgICAgICAgICAgICAgICJEWF9TVEFHSU5HX1BST0NfREFZUyIsICJUTk1fQ0xJTl9UIiwgIlROTV9DTElOX04iLCAiVE5NX0NMSU5fTSIsCiAgICAgICAgICAgICAgICAgIlROTV9DTElOX1NUQUdFX0dST1VQIiwgIlROTV9QQVRIX1QiLCAiVE5NX1BBVEhfTiIsICJUTk1fUEFUSF9NIiwKICAgICAgICAgICAgICAgICAiVE5NX1BBVEhfU1RBR0VfR1JPVVAiLCAiRFhfUlhfU1RBUlRFRF9EQVlTIiwgIkRYX1NVUkdfU1RBUlRFRF9EQVlTIiwKICAgICAgICAgICAgICAgICAiRFhfREVGU1VSR19TVEFSVEVEX0RBWVMiLCAiTUFSR0lOUyIsICJNQVJHSU5TX1lOIiwgIlNVUkdfRElTQ0hBUkdFX0RBWVMiLAogICAgICAgICAgICAgICAgICJSRUFETV9IT1NQXzMwX0RBWVNfRiIsICJSWF9TVU1NX1JBRElBVElPTl9GIiwgIlBVRl8zMF9EQVlfTU9SVF9DRF9GIiwKICAgICAgICAgICAgICAgICAiUFVGXzkwX0RBWV9NT1JUX0NEX0YiLCAiRFhfTEFTVENPTlRBQ1RfREVBVEhfTU9OVEhTIiwgCiAgICAgICAgICAgICAgICAgIkxZTVBIX1ZBU0NVTEFSX0lOVkFTSU9OX0YiLCAiUlhfSE9TUF9TVVJHX0FQUFJfMjAxMF9GIiwgIlNVUkdfUkFEX1NFUSIsCiAgICAgICAgICAgICAgICAgIlNVUkdfUkFEX1NFUV9DIiwgIlNVUkdFUllfWU4iLCAiUkFESUFUSU9OX1lOIiwgIkNIRU1PX1lOIiwgCiAgICAgICAgICAgICAgICAgIklNTVVOT19ZTiIsICJUeF9ZTiIsICJtZXRzX2F0X2R4IiwKICAgICAgICAgICAgICAgICAiTUVESUNBSURfRVhQTl9DT0RFIiwgIkVYUE5fR1JPVVAiKSkKCmBgYAoKYGBge3J9CnBfdGFibGUoZGF0YSwKICAgICAgICB2YXJzID0gYygiRkFDSUxJVFlfVFlQRV9GIiwgIkZBQ0lMSVRZX0xPQ0FUSU9OX0YiLCAiRkFDSUxJVFlfR0VPR1JBUEhZIiwgICJBR0UiLCAiQUdFX0YiLCAiQUdFXzQwIiwKICAgICAgICAgICAgICAgICAiU0VYX0YiLCAiUkFDRV9GIiwgIkhJU1BBTklDIiwgIklOU1VSQU5DRV9GIiwgCiAgICAgICAgICAgICAgICAgIklOQ09NRV9GIiwgIkVEVUNBVElPTl9GIiwgIlVfUl9GIiwgIkNST1dGTFkiLCAiQ0RDQ19UT1RBTF9CRVNUIiwKICAgICAgICAgICAgICAgICAiU0lURV9URVhUIiwgIkJFSEFWSU9SIiwgIkdSQURFX0YiLAogICAgICAgICAgICAgICAgICJEWF9TVEFHSU5HX1BST0NfREFZUyIsICJUTk1fQ0xJTl9UIiwgIlROTV9DTElOX04iLCAiVE5NX0NMSU5fTSIsCiAgICAgICAgICAgICAgICAgIlROTV9DTElOX1NUQUdFX0dST1VQIiwgIlROTV9QQVRIX1QiLCAiVE5NX1BBVEhfTiIsICJUTk1fUEFUSF9NIiwKICAgICAgICAgICAgICAgICAiVE5NX1BBVEhfU1RBR0VfR1JPVVAiLCAiRFhfUlhfU1RBUlRFRF9EQVlTIiwgIkRYX1NVUkdfU1RBUlRFRF9EQVlTIiwKICAgICAgICAgICAgICAgICAiRFhfREVGU1VSR19TVEFSVEVEX0RBWVMiLCAiTUFSR0lOUyIsICJNQVJHSU5TX1lOIiwgIlNVUkdfRElTQ0hBUkdFX0RBWVMiLAogICAgICAgICAgICAgICAgICJSRUFETV9IT1NQXzMwX0RBWVNfRiIsICJSWF9TVU1NX1JBRElBVElPTl9GIiwgIlBVRl8zMF9EQVlfTU9SVF9DRF9GIiwKICAgICAgICAgICAgICAgICAiUFVGXzkwX0RBWV9NT1JUX0NEX0YiLCAiRFhfTEFTVENPTlRBQ1RfREVBVEhfTU9OVEhTIiwgCiAgICAgICAgICAgICAgICAgIkxZTVBIX1ZBU0NVTEFSX0lOVkFTSU9OX0YiLCAiUlhfSE9TUF9TVVJHX0FQUFJfMjAxMF9GIiwgIlNVUkdfUkFEX1NFUSIsCiAgICAgICAgICAgICAgICAgIlNVUkdfUkFEX1NFUV9DIiwgIlRfU0laRSIsICJTVVJHRVJZX1lOIiwgIlJBRElBVElPTl9ZTiIsICJDSEVNT19ZTiIsCiAgICAgICAgICAgICAgICAgIklNTVVOT19ZTiIsICJUeF9ZTiIsICJtZXRzX2F0X2R4IiwKICAgICAgICAgICAgICAgICAiTUVESUNBSURfRVhQTl9DT0RFIiksIAogICAgICAgIHN0cmF0YSA9ICJTVVJHRVJZX1lOIikKCgpwX3RhYmxlKGRhdGEsCiAgICAgICAgdmFycyA9IGMoIkZBQ0lMSVRZX1RZUEVfRiIsICJGQUNJTElUWV9MT0NBVElPTl9GIiwgIkZBQ0lMSVRZX0dFT0dSQVBIWSIsICAiQUdFIiwgIkFHRV9GIiwgIkFHRV80MCIsCiAgICAgICAgICAgICAgICAgIlNFWF9GIiwgIlJBQ0VfRiIsICJISVNQQU5JQyIsICJJTlNVUkFOQ0VfRiIsIAogICAgICAgICAgICAgICAgICJJTkNPTUVfRiIsICJFRFVDQVRJT05fRiIsICJVX1JfRiIsICJDUk9XRkxZIiwgIkNEQ0NfVE9UQUxfQkVTVCIsCiAgICAgICAgICAgICAgICAgIlNJVEVfVEVYVCIsICJCRUhBVklPUiIsICJHUkFERV9GIiwKICAgICAgICAgICAgICAgICAiRFhfU1RBR0lOR19QUk9DX0RBWVMiLCAiVE5NX0NMSU5fVCIsICJUTk1fQ0xJTl9OIiwgIlROTV9DTElOX00iLAogICAgICAgICAgICAgICAgICJUTk1fQ0xJTl9TVEFHRV9HUk9VUCIsICJUTk1fUEFUSF9UIiwgIlROTV9QQVRIX04iLCAiVE5NX1BBVEhfTSIsCiAgICAgICAgICAgICAgICAgIlROTV9QQVRIX1NUQUdFX0dST1VQIiwgIkRYX1JYX1NUQVJURURfREFZUyIsICJEWF9TVVJHX1NUQVJURURfREFZUyIsCiAgICAgICAgICAgICAgICAgIkRYX0RFRlNVUkdfU1RBUlRFRF9EQVlTIiwgIk1BUkdJTlMiLCAiTUFSR0lOU19ZTiIsICJTVVJHX0RJU0NIQVJHRV9EQVlTIiwKICAgICAgICAgICAgICAgICAiUkVBRE1fSE9TUF8zMF9EQVlTX0YiLCAiUlhfU1VNTV9SQURJQVRJT05fRiIsICJQVUZfMzBfREFZX01PUlRfQ0RfRiIsCiAgICAgICAgICAgICAgICAgIlBVRl85MF9EQVlfTU9SVF9DRF9GIiwgIkRYX0xBU1RDT05UQUNUX0RFQVRIX01PTlRIUyIsIAogICAgICAgICAgICAgICAgICJMWU1QSF9WQVNDVUxBUl9JTlZBU0lPTl9GIiwgIlJYX0hPU1BfU1VSR19BUFBSXzIwMTBfRiIsICJTVVJHX1JBRF9TRVEiLAogICAgICAgICAgICAgICAgICJTVVJHX1JBRF9TRVFfQyIsICJUX1NJWkUiLCAiU1VSR0VSWV9ZTiIsICJSQURJQVRJT05fWU4iLCAKICAgICAgICAgICAgICAgICAiQ0hFTU9fWU4iLCAiSU1NVU5PX1lOIiwgIlR4X1lOIiwgIm1ldHNfYXRfZHgiLAogICAgICAgICAgICAgICAgICJNRURJQ0FJRF9FWFBOX0NPREUiKSwgCiAgICAgICAgc3RyYXRhID0gIlJBRElBVElPTl9ZTiIpCgpwX3RhYmxlKGRhdGEsCiAgICAgICAgdmFycyA9IGMoIkZBQ0lMSVRZX1RZUEVfRiIsICJGQUNJTElUWV9MT0NBVElPTl9GIiwgIkZBQ0lMSVRZX0dFT0dSQVBIWSIsICAiQUdFIiwgIkFHRV9GIiwgIkFHRV80MCIsCiAgICAgICAgICAgICAgICAgIlNFWF9GIiwgIlJBQ0VfRiIsICJISVNQQU5JQyIsICJJTlNVUkFOQ0VfRiIsIAogICAgICAgICAgICAgICAgICJJTkNPTUVfRiIsICJFRFVDQVRJT05fRiIsICJVX1JfRiIsICJDUk9XRkxZIiwgIkNEQ0NfVE9UQUxfQkVTVCIsCiAgICAgICAgICAgICAgICAgIlNJVEVfVEVYVCIsICJCRUhBVklPUiIsICJHUkFERV9GIiwKICAgICAgICAgICAgICAgICAiRFhfU1RBR0lOR19QUk9DX0RBWVMiLCAiVE5NX0NMSU5fVCIsICJUTk1fQ0xJTl9OIiwgIlROTV9DTElOX00iLAogICAgICAgICAgICAgICAgICJUTk1fQ0xJTl9TVEFHRV9HUk9VUCIsICJUTk1fUEFUSF9UIiwgIlROTV9QQVRIX04iLCAiVE5NX1BBVEhfTSIsCiAgICAgICAgICAgICAgICAgIlROTV9QQVRIX1NUQUdFX0dST1VQIiwgIkRYX1JYX1NUQVJURURfREFZUyIsICJEWF9TVVJHX1NUQVJURURfREFZUyIsCiAgICAgICAgICAgICAgICAgIkRYX0RFRlNVUkdfU1RBUlRFRF9EQVlTIiwgIk1BUkdJTlMiLCAiTUFSR0lOU19ZTiIsICJTVVJHX0RJU0NIQVJHRV9EQVlTIiwKICAgICAgICAgICAgICAgICAiUkVBRE1fSE9TUF8zMF9EQVlTX0YiLCAiUlhfU1VNTV9SQURJQVRJT05fRiIsICJQVUZfMzBfREFZX01PUlRfQ0RfRiIsCiAgICAgICAgICAgICAgICAgIlBVRl85MF9EQVlfTU9SVF9DRF9GIiwgIkRYX0xBU1RDT05UQUNUX0RFQVRIX01PTlRIUyIsIAogICAgICAgICAgICAgICAgICJMWU1QSF9WQVNDVUxBUl9JTlZBU0lPTl9GIiwgIlJYX0hPU1BfU1VSR19BUFBSXzIwMTBfRiIsICJTVVJHX1JBRF9TRVEiLAogICAgICAgICAgICAgICAgICJTVVJHX1JBRF9TRVFfQyIsICJUX1NJWkUiLCAiU1VSR0VSWV9ZTiIsICJSQURJQVRJT05fWU4iLCAKICAgICAgICAgICAgICAgICAiQ0hFTU9fWU4iLCAiSU1NVU5PX1lOIiwgIlR4X1lOIiwibWV0c19hdF9keCIsCiAgICAgICAgICAgICAgICAgIk1FRElDQUlEX0VYUE5fQ09ERSIpLCAKICAgICAgICBzdHJhdGEgPSAiQ0hFTU9fWU4iKQoKCnBfdGFibGUoZGF0YSwKICAgICAgICB2YXJzID0gYygiRkFDSUxJVFlfVFlQRV9GIiwgIkZBQ0lMSVRZX0xPQ0FUSU9OX0YiLCAiRkFDSUxJVFlfR0VPR1JBUEhZIiwgICJBR0UiLCAiQUdFX0YiLCAiQUdFXzQwIiwKICAgICAgICAgICAgICAgICAiU0VYX0YiLCAiUkFDRV9GIiwgIkhJU1BBTklDIiwgIklOU1VSQU5DRV9GIiwgCiAgICAgICAgICAgICAgICAgIklOQ09NRV9GIiwgIkVEVUNBVElPTl9GIiwgIlVfUl9GIiwgIkNST1dGTFkiLCAiQ0RDQ19UT1RBTF9CRVNUIiwKICAgICAgICAgICAgICAgICAiU0lURV9URVhUIiwgIkJFSEFWSU9SIiwgIkdSQURFX0YiLAogICAgICAgICAgICAgICAgICJEWF9TVEFHSU5HX1BST0NfREFZUyIsICJUTk1fQ0xJTl9UIiwgIlROTV9DTElOX04iLCAiVE5NX0NMSU5fTSIsCiAgICAgICAgICAgICAgICAgIlROTV9DTElOX1NUQUdFX0dST1VQIiwgIlROTV9QQVRIX1QiLCAiVE5NX1BBVEhfTiIsICJUTk1fUEFUSF9NIiwKICAgICAgICAgICAgICAgICAiVE5NX1BBVEhfU1RBR0VfR1JPVVAiLCAiRFhfUlhfU1RBUlRFRF9EQVlTIiwgIkRYX1NVUkdfU1RBUlRFRF9EQVlTIiwKICAgICAgICAgICAgICAgICAiRFhfREVGU1VSR19TVEFSVEVEX0RBWVMiLCAiTUFSR0lOUyIsICJNQVJHSU5TX1lOIiwgIlNVUkdfRElTQ0hBUkdFX0RBWVMiLAogICAgICAgICAgICAgICAgICJSRUFETV9IT1NQXzMwX0RBWVNfRiIsICJSWF9TVU1NX1JBRElBVElPTl9GIiwgIlBVRl8zMF9EQVlfTU9SVF9DRF9GIiwKICAgICAgICAgICAgICAgICAiUFVGXzkwX0RBWV9NT1JUX0NEX0YiLCAiRFhfTEFTVENPTlRBQ1RfREVBVEhfTU9OVEhTIiwgCiAgICAgICAgICAgICAgICAgIkxZTVBIX1ZBU0NVTEFSX0lOVkFTSU9OX0YiLCAiUlhfSE9TUF9TVVJHX0FQUFJfMjAxMF9GIiwgIlNVUkdfUkFEX1NFUSIsCiAgICAgICAgICAgICAgICAgIlNVUkdfUkFEX1NFUV9DIiwgIlRfU0laRSIsICJTVVJHRVJZX1lOIiwgIlJBRElBVElPTl9ZTiIsIAogICAgICAgICAgICAgICAgICJDSEVNT19ZTiIsICJtZXRzX2F0X2R4IiwgIklNTVVOT19ZTiIsICJUeF9ZTiIsCiAgICAgICAgICAgICAgICAgIk1FRElDQUlEX0VYUE5fQ09ERSIpLCAKICAgICAgICBzdHJhdGEgPSAiVHhfWU4iKQpgYGAKCgoKCgoKCiNLYXBsYW4gTWVpZXIgQW5hbHlzaXMKCgojI0FsbAoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiQWxsIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjRmFjaWxpdHkgVHlwZQpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJGQUNJTElUWV9UWVBFX0YiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNGYWNpbGl0eSBMb2NhdGlvbgoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiRkFDSUxJVFlfTE9DQVRJT05fRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI0ZhY2lsaXR5IEdlb2dyYXBoeQoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiRkFDSUxJVFlfR0VPR1JBUEhZIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjQWdlIEdyb3VwCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJBR0VfRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI0FnZSBHcm91cApgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJBR0VfNDAiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNHZW5kZXIKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlNFWF9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjUkFDRV9GCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJSQUNFX0YiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNIaXNwYW5pYwoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiSElTUEFOSUMiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNJbnN1cmFuY2UgU3RhdHVzCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJJTlNVUkFOQ0VfRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI092ZXJhbGwgU3Vydml2YWwgcHJlL3Bvc3QtQUNBIGV4cGFuc2lvbgoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiRVhQTl9HUk9VUCIsIGRhdGFfaW1wID0gbm9fRXhjbHVkZXMpCmBgYAoKCjwhLS0gIyNJbmNvbWUgLS0+Cgo8IS0tIGBgYHtyfSAtLT4KPCEtLSBjbGFzcyhkYXRhJElOQ09NRV9GKSAtLT4KPCEtLSB1bmlfdmFyKHRlc3RfdmFyID0gIklOQ09NRV9GIiwgZGF0YV9pbXAgPSBkYXRhKSAtLT4KPCEtLSBgYGAgLS0+CgojI0VkdWNhdGlvbgoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiRURVQ0FUSU9OX0YiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNVcmJhbi9SdXJhbAoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiVV9SX0YiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNDbGFzcyAodHJlYXRtZW50IGF0IHBlcmZvcm1pbmcgZmFjaWxpdHkpCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJDTEFTU19PRl9DQVNFX0YiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNZZWFyCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJZRUFSX09GX0RJQUdOT1NJUyIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI1ByaW1hcnkgU2l0ZQoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiU0lURV9URVhUIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCgojI0hpc3RvbG9neQoKYGBge3J9CiN1bmlfdmFyKHRlc3RfdmFyID0gIkhJU1RPTE9HWV9GX0xJTSIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgo8IS0tICMjQmVoYXZpb3IgLS0+Cgo8IS0tIGBgYHtyfSAtLT4KPCEtLSB1bmlfdmFyKHRlc3RfdmFyID0gIkJFSEFWSU9SIiwgZGF0YV9pbXAgPSBkYXRhKSAtLT4KPCEtLSBgYGAgLS0+CgojI0dyYWRlCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJHUkFERV9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjQ2xpbmljYWwgVCBTdGFnZQoKYGBge3J9CiN1bmlfdmFyKHRlc3RfdmFyID0gIlROTV9DTElOX1QiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNDbGluaWNhbCBOIFN0YWdlCgpgYGB7cn0KI3VuaV92YXIodGVzdF92YXIgPSAiVE5NX0NMSU5fTiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI0NsaW5pY2FsIE0gU3RhZ2UKCmBgYHtyfQojdW5pX3Zhcih0ZXN0X3ZhciA9ICJUTk1fQ0xJTl9NIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjQ2xpbmljYWwgU3RhZ2UgR3JvdXAKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlROTV9DTElOX1NUQUdFX0dST1VQIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjUGF0aG9sb2dpYyBUIFN0YWdlCgpgYGB7cn0KI3VuaV92YXIodGVzdF92YXIgPSAiVE5NX1BBVEhfVCIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI1BhdGhvbG9naWMgTiBTdGFnZQoKYGBge3J9CiN1bmlfdmFyKHRlc3RfdmFyID0gIlROTV9QQVRIX04iLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNQYXRob2xvZ2ljIE0gU3RhZ2UKCmBgYHtyfQojdW5pX3Zhcih0ZXN0X3ZhciA9ICJUTk1fUEFUSF9NIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjUGF0aG9sb2dpYyBTdGFnZSBHcm91cAoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiVE5NX1BBVEhfU1RBR0VfR1JPVVAiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNNYXJnaW5zCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIk1BUkdJTlMiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNNYXJnaW5zIFllcy9ObwpgYGB7cn0KI3VuaV92YXIodGVzdF92YXIgPSAiTUFSR0lOU19ZTiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojIzMwIERheSBSZWFkbWlzc2lvbgoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiUkVBRE1fSE9TUF8zMF9EQVlTX0YiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNSYWRpYXRpb24gVHlwZQoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiUlhfU1VNTV9SQURJQVRJT05fRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgoKIyNMeW1waG92YXNjdWxhciBJbnZhc2lvbgoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiTFlNUEhfVkFTQ1VMQVJfSU5WQVNJT05fRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI0VuZG9zY29waWMvUm9ib3RpYwoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiUlhfSE9TUF9TVVJHX0FQUFJfMjAxMF9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjU3VyZ2VyeSBSYWRpYXRpb24gU2VxdWVuY2UgCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJTVVJHX1JBRF9TRVEiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNTdXJnZXJ5IFllcy9ObwoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiU1VSR0VSWV9ZTiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI1JhZGlhdGlvbiBZZXMvTm8KCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlJBRElBVElPTl9ZTiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI0NoZW1vIFllcy9ObwoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiQ0hFTU9fWU4iLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKCiMjVHJlYXRtZW50IFllcy9ObwpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJUeF9ZTiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI01ldGFzdGFzZXMgYXQgRHgKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAibWV0c19hdF9keF9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCjwhLS0gIyNUdW1vciBTaXplIC0tPgoKPCEtLSBgYGB7cn0gLS0+CjwhLS0gdW5pX3Zhcih0ZXN0X3ZhciA9ICJUX1NJWkUiLCBkYXRhX2ltcCA9IGRhdGEpIC0tPgo8IS0tIGBgYCAtLT4KCiNUdW1vciBzcGVjaWZpYyBWYXJpYWJsZXMKCgojIyNOb2RlIFNpemUKCgojQ294IFByb3BvcnRpb25hbCBIYXphcmQgUmF0aW8KCiMjTW9kZWwgIzEKCiMjI0Z1bGwgYW5hbHlzaXMKCmBgYHtyfQptb2RlbF9vbmUgPC0gY294cGgoU3VydihEWF9MQVNUQ09OVEFDVF9ERUFUSF9NT05USFMsIFBVRl9WSVRBTF9TVEFUVVMgPT0gMCkKICAgICAgICAgICAgICAgICAgICAgfiBGQUNJTElUWV9UWVBFX0YgKyBGQUNJTElUWV9MT0NBVElPTl9GICsgQ1JPV0ZMWSArIAogICAgICAgICAgICAgICAgIERYX1NUQUdJTkdfUFJPQ19EQVlTICsgCiAgICAgICAgICAgICAgICAgQ0hFTU9fWU4gKyBSQURJQVRJT05fWU4gKyBTVVJHRVJZX1lOICsgSU1NVU5PX1lOICtgCiAgICAgICAgICAgICAgICAgQUdFX0YgKyBTRVhfRiArIFJBQ0VfRiArIEhJU1BBTklDICsgSU5TVVJBTkNFX0YgKyBJTkNPTUVfRiArIAogICAgICAgICAgICAgICAgIEVEVUNBVElPTl9GICsgWUVBUl9PRl9ESUFHTk9TSVMsCiAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhKQptb2RlbF9vbmUgJT4lIHN1bW1hcnkoKQoKCmBgYAoKIyMjU3VtbWFyeSBvZiBNb2RlbAoKYGBge3J9Cm1vZGVsX29uZSAlPiUKICAgICAgICB0aWR5KC4sIGV4cG9uZW50aWF0ZSA9IFRSVUUpICU+JQogICAgICAgIHNlbGVjdCh0ZXJtLCBlc3RpbWF0ZSwgY29uZi5sb3csIGNvbmYuaGlnaCwgcC52YWx1ZSkgJT4lCiAgICAgICAgcmVuYW1lKFZhcmlhYmxlID0gdGVybSwKICAgICAgICAgICAgICAgSGF6YXJkX1JhdGlvID0gZXN0aW1hdGUpICU+JQogICAgICAgIHRibF9kZiAlPiUKICAgICAgICBwcmludChuID0gbnJvdyguKSkKCmBgYAoKIyMgTGluZWFyIFJlZ3Jlc3Npb24gCmBgYHtyfQoKI29ubHkgaW5jbHVkZSByb3dzIHdpdGgga25vd24gdHJlYXRtZW50IGluZm9ybWF0aW9uLCBuID0gODIKZGF0YTIgPC0gZGF0YSAlPiUgZmlsdGVyKFNVUkdFUllfWU4gIT0gIlVrbiIgJiBSQURJQVRJT05fWU4gIT0gIlVrbiIKICAgICAgICAgICAgICAgICAgICAgICAgICYgQ0hFTU9fWU4gIT0gIlVrbiIgJiBJTU1VTk9fWU4gIT0gIlVrbiIpCgojIGluY2x1ZGUgb25seSB2YXJpYWJsZXMgd2l0aCBkYXRhIGF2YWlsYWJsZSBmb3IgYXQgbGVhc3QgNzUlIGNhc2VzIAojIGZyb20gdGhlIGZvbGxvd2luZyBzZXQgb2YgdmFyaWFibGVzIG9mIGludGVyZXN0OgoKIyMgRkFDSUxJVFlfVFlQRV9GICsgRkFDSUxJVFlfR0VPR1JBUEhZICsgQ1JPV0ZMWSArIAojIyAgICAgICAgICAgICAgICAgRFhfU1RBR0lOR19QUk9DX0RBWVMgKyAKIyMgICAgICAgICAgICAgICAgIENIRU1PX1lOICsgUkFESUFUSU9OX1lOICsgU1VSR0VSWV9ZTiArIElNTVVOT19ZTiArCiMjICAgICAgICAgICAgICAgICBBR0UgKyBTRVhfRiArIFJBQ0VfRiArIEhJU1BBTklDICsgSU5TVVJBTkNFX0YgKyBJTkNPTUVfRiArIAojIyAgICAgICAgICAgICAgICAgRURVQ0FUSU9OX0YgKyBZRUFSX09GX0RJQUdOT1NJUyArIFNJVEVfVEVYVCArIEdSQURFX0YKCmxlbmd0aCh3aGljaChpcy5uYShkYXRhMiRHUkFERV9GKSkpIC8gbnJvdyhkYXRhMikKCiMgZXhjbHVkZWQgdGhlIGZvbGxvd2luZyBpbiB0aGlzIGFuYWx5c2lzIGR1ZSB0byBtaXNzaW5nIGRhdGE6IAojICBEWF9TVEFHSU5HX1BST0NfREFZUywgR1JBREVfRiAobW9zdGx5IHVua25vd25zKQoKZml0X3N1cnYgPC0gbG0oRFhfTEFTVENPTlRBQ1RfREVBVEhfTU9OVEhTIH4KICAgICAgICAgICAgICAgICBGQUNJTElUWV9UWVBFX0YgKyBGQUNJTElUWV9MT0NBVElPTl9GICsgQ1JPV0ZMWSArIAogICAgICAgICAgICAgICAgIENIRU1PX1lOICsgUkFESUFUSU9OX1lOICsgU1VSR0VSWV9ZTiArIAogICAgICAgICAgICAgICAgIEFHRV9GICsgUkFDRV9GICsgCiAgICAgICAgICAgICAgICAgRURVQ0FUSU9OX0YgKyBZRUFSX09GX0RJQUdOT1NJUyArIFNJVEVfVEVYVCwKICAgZGF0YSA9IGRhdGEyKQoKc3VtbWFyeShmaXRfc3VydikgIyBSXjIgPSAwLjM5MzYsIHAgPCAyLjJlLTE2CgojIHRoZSBmb2xsb3dpbmcgdmFyaWFibGVzIHdlcmUgZXhjbHVkZWQgdG8gCiMgaW1wcm92ZSB0aGUgUi1zcXVhcmVkIG9mIHRoZSByZWdyZXNzaW9uIChpbml0aWFsbHkgUl4yID0gMC4zOTMxKToKIyBJTkNPTUVfRiArIElOU1VSQU5DRV9GICsgSElTUEFOSUMgKyAgU0VYX0YgKyBJTU1VTk9fWU4gKwpgYGAKCiMgUHJlZGljdGlvbiBMb2dpc3RpYyBSZWdyZXNzaW9uIE1vZGVscwoKIyMgU3VyZ2VyeQpgYGB7cn0KCm5vX1VrbnMgPC0gZGF0YTIgJT4lCiAgZHJvcGxldmVscygpICU+JSAKICBtdXRhdGUoU1VSR0VSWV9ZTiA9IGFzLmxvZ2ljYWwoU1VSR0VSWV9ZTikpCgojIGV4Y2x1ZGVkIHRoZSBmb2xsb3dpbmcgaW4gdGhpcyBhbmFseXNpcyBkdWUgdG8gbWlzc2luZyBkYXRhOiAKIyAgRFhfU1RBR0lOR19QUk9DX0RBWVMsIEdSQURFX0YgKG1vc3RseSB1bmtub3ducykKCmZpdF9zdXJnIDwtIGdsbShTVVJHX1RGIH4gCiAgICAgICAgICAgICAgICAgRkFDSUxJVFlfVFlQRV9GICsgRkFDSUxJVFlfTE9DQVRJT05fRiArIAogICAgICAgICAgICAgICAgIENIRU1PX1lOICsgUkFESUFUSU9OX1lOICsgSU1NVU5PX1lOICsKICAgICAgICAgICAgICAgICBBR0VfRiArIFNFWF9GICsgUkFDRV9GICsgSElTUEFOSUMgKyBJTlNVUkFOQ0VfRiArIElOQ09NRV9GICsgCiAgICAgICAgICAgICAgICAgRURVQ0FUSU9OX0YgKyBZRUFSX09GX0RJQUdOT1NJUyArIFNJVEVfVEVYVCwKICAgZGF0YSA9IG5vX1VrbnMpCgpzdW1tYXJ5KGZpdF9zdXJnKQoKCiMgdGhlIGZvbGxvd2luZyB2YXJpYWJsZXMgd2VyZSBleGNsdWRlZCB0byAKIyBpbXByb3ZlIHRoZSBSLXNxdWFyZWQgb2YgdGhlIHJlZ3Jlc3Npb24gKGluaXRpYWxseSByZXNpZHVhbCA9IDgyLjUzNCk6CiMgbm9uZQoKZXhwKGNiaW5kKCJPZGRzIHJhdGlvIiA9IGNvZWYoZml0X3N1cmcpLCBjb25maW50LmRlZmF1bHQoZml0X3N1cmcsIGxldmVsID0gMC45NSkpKQpgYGAKCiMjIE1ldGFzdGFzaXMgYXQgVGltZSBvZiBEaWFnbm9zaXMKYGBge3J9CgpmaXRfbWV0cyA8LSBnbG0obWV0c19hdF9keF9GIH4gCiAgICAgICAgICAgICAgICAgRkFDSUxJVFlfVFlQRV9GICsgRkFDSUxJVFlfR0VPR1JBUEhZICsgQ1JPV0ZMWSArIAogICAgICAgICAgICAgICAgIEFHRV9GICsgU0VYX0YgKyBSQUNFX0YgKyBISVNQQU5JQyArIElOU1VSQU5DRV9GICsgSU5DT01FX0YgKyAKICAgICAgICAgICAgICAgICBFRFVDQVRJT05fRiArIFlFQVJfT0ZfRElBR05PU0lTICsgU0lURV9URVhULAogICBkYXRhID0gZGF0YSkKCiMgdGhlIGZvbGxvd2luZyB2YXJpYWJsZXMgd2VyZSBleGNsdWRlZCB0byAKIyBpbXByb3ZlIHRoZSBSLXNxdWFyZWQgb2YgdGhlIHJlZ3Jlc3Npb24gKGluaXRpYWxseSByZXNpZHVhbCA9IDQuNzE2OSk6CiMgCgpzdW1tYXJ5KGZpdF9tZXRzKQoKZXhwKGNiaW5kKCJPZGRzIHJhdGlvIiA9IGNvZWYoZml0X21ldHMpLCBjb25maW50LmRlZmF1bHQoZml0X3N1cmcsIGxldmVsID0gMC45NSkpKQpgYGAKCg==